c++ 有关类的静态成员详细笔记

什么是静态成员?

别名也可以叫做静态数据成员,如果一个类建立了多个对象,那么每一个对象都会有自己的数据成员。这些值呢?互不相干,很好地实现了每一个对象之间的区别也就是所谓的封装和隐藏。但在有的时候,我们希望

有一些数据可以为一个类中的所有对象共有,所以c++通过静态成员变量来解决这个问题

所以说,静态成员变量是类的所有对象所共有的,都可以通过自己的下标去访问这个变量。而系统也会给静态成员单独分配一个储存的空间,不挂被定义了多少个类的对象,静态成员变量的值对于每一个对象都是一样的。如果对这个值进行修改,那么类中所有对象的这个值都会发生改变。

一,多个类使用一个静态成员变量,可以节约空间。

二,多个同类的对象共享一个静态成员变量,一个改了,全部都会改,更便于修改与维护。

一般比如,一个图书馆最多阅读书籍的数量或者是银行的利率再或者是餐饮的订餐等等

如何定义?

静态成员变量以static开头定义,格式为

static 类型名 静态成员变量名class Student{private:static int total;string name;int id;public:Student (string m,int id);void show();
}

静态成员变量的初始化

静态成员变量不能在类内进行初始化,因为它不属于某一个对象,它属于的是整个类,所以静态成员变量在类内进行初始化。

如果我们在类内定义的话,那么我们每次定义一个变量,都需要调用一次构造函数,都会对static的值进行一次改变,这显然不是我们想要达到的目的。

class Student{private:static int total;//学生数量string name;//学生姓名int id;//学号public:Student (string m,int id);void show();
}int Student :: total = 0;// 初始化在类外定义Student :: Student(string m,int id){cout << "增加一个学生" << endl;total++;//    虽然不能初始化,但是在函数里面可以使用
}

静态成员变量的使用

放到类内的时候呢?我们就是正常的使用它就可以了。但是我们如果需要在类外访问它,应该如何访问呢?

class Student{private:string name;//学生姓名int id;//学号public:static int total;//学生数量Student (string m,int id);void show();
}int Student :: total = 0;// 初始化在类外定义Student :: Student(string m,int id){cout << "增加一个学生" << endl;total++;//    虽然不能初始化,但是在函数里面可以使用
}int main(){Student :: total;//这是第一种访问Student mmm("小三月",37);mmm.total;//这是第二种访问}

静态成员函数

静态成员函数和静态成员变量大差不差,但是:静态成员函数是可以在类内定义的,和变量最大的区别就在于,变量只能在类外定义,并且必须加类限定访问符,而函数既可以在类外定义也可以在类内定义,和变量一样,在类外定义的时候不加static。

同理,可以使用和变量一样的方法,在类外去访问这个函数。(访问限定符和对象访问)

重要的点在于:非静态成员函数在对象调用的时候,会自动生成一个该对象的this指针,指向自己。但是静态成员函数没有一个固定的对象,他是所有对象的共有,所以没有this指针,所以我也没有办法去调用this指针去访问他本身。


每日金句:

        追求的后面没有句号,人生也永远没有太晚的开始,只要你听从内心的召唤,勇于迈出第一步,人生的风景就永远是新奇的、美妙的。

                                                                                                        ————  雀儿

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/576274.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一、Go开发环境搭建

文章目录 1、开发工具2、开发环境配置3、Hello World4、语法 1、开发工具 https://code.visualstudio.com/download 2、开发环境配置 类比Java的JDK&#xff0c;go的SDK下载&#xff1a;https://studygolang.com/dl 解压&#xff1a; 配置环境变量path&#xff0c;将命令&quo…

企业年报组织机构代码查询入口

全国组织机构代码由八位数字&#xff08;或大写拉丁字母&#xff09;本体代码和一位数字&#xff08;或大写拉丁字母&#xff09;校验码&#xff0c;共9位组成&#xff1b; 组织机构代码在哪里怎么查询&#xff1f; 1、打开「词令」小程序&#xff1b; 2、打开词令小程序后&am…

免费VPS/云服务器整理汇总

随着互联网的普及和云计算技术的飞速发展&#xff0c;越来越多的人开始尝试使用VPS&#xff08;Virtual Private Server&#xff0c;虚拟专用服务器&#xff09;或者云服务器来部署自己的在线业务。本文将对免费VPS/云服务器进行整理汇总&#xff0c;助力大家轻松开启云计算之旅…

MySQL 数据库的日志管理、备份与恢复

一. 数据库备份 1.数据备份的重要性 备份的主要目的是灾难恢复。 在生产环境中&#xff0c;数据的安全性至关重要。 任何数据的丢失都可能产生严重的后果。 造成数据丢失的原因&#xff1a; 程序错误人为,操作错误,运算错误,磁盘故障灾难&#xff08;如火灾、地震&#xff0…

Web Components使用(一)

在使用Web Components之前&#xff0c;我们先看看上一篇文章Web Components简介&#xff0c;其中提到了相关的接口、属性和方法。 正是这些接口、属性和方法才实现了Web Components的主要技术&#xff1a;Custom elements&#xff08;自定义元素&#xff09;、Shadow DOM&#…

element-ui autocomplete 组件源码分享

紧接着 input 组件的源码&#xff0c;分享带输入建议的 autocomplete 组件&#xff0c;在 element-ui 官方文档上&#xff0c;没有这个组件的 api 目录&#xff0c;它的 api 是和 input 组件的 api 在一起的&#xff0c;看完源码之后发现&#xff0c;源码当中 autocomplete 组件…

【管理咨询宝藏59】某大型汽车物流战略咨询报告

本报告首发于公号“管理咨询宝藏”&#xff0c;如需阅读完整版报告内容&#xff0c;请查阅公号“管理咨询宝藏”。 【管理咨询宝藏59】某大型汽车物流战略咨询报告 【格式】PDF 【关键词】HR调研、商业分析、管理咨询 【核心观点】 - 重新评估和调整商业模式&#xff0c;开拓…

葵花卫星影像应用场景及数据获取

一、卫星参数 葵花卫星是由中国航天科技集团公司研制的一颗光学遥感卫星&#xff0c;代号CAS-03。该卫星于2016年11月9日成功发射&#xff0c;位于地球同步轨道&#xff0c;轨道高度约为35786公里&#xff0c;倾角为0。卫星设计寿命为5年&#xff0c;搭载了高分辨率光学相机和多…

3D产品可视化SaaS

“我们正在走向衰退吗&#xff1f;” “我们已经陷入衰退了吗&#xff1f;” “我们正在步入衰退。” 过去几个月占据头条的问题和陈述引发了关于市场对每个行业影响的讨论和激烈辩论。 特别是对于科技行业来说&#xff0c;过去几周一直很动荡&#xff0c;围绕费用、增长和裁…

Unity3d使用Jenkins自动化打包(Windows)(一)

文章目录 前言一、安装JDK二、安装Jenkins三、Jenkins插件安装和使用基础操作 实战一基础操作 实战二 四、离线安装总结 前言 本篇旨在介绍基础的安装和操作流程&#xff0c;只需完成一次即可。后面的篇章将深入探讨如何利用Jenkins为Unity项目进行打包。 一、安装JDK 1、进入…

Python-VBA编程500例-024(入门级)

字符串写入的行数(Line Count For String Writing)在实际应用中有着广泛的应用场景。常见的应用场景有&#xff1a; 1、文本编辑及处理&#xff1a;在编写或编辑文本文件时&#xff0c;如使用文本编辑器或文本处理器&#xff0c;经常需要处理字符串并确定其在文件中的行数。这…

2014年认证杯SPSSPRO杯数学建模A题(第二阶段)轮胎的花纹全过程文档及程序

2014年认证杯SPSSPRO杯数学建模 A题 轮胎的花纹 原题再现&#xff1a; 轮胎被广泛使用在多种陆地交通工具上。根据性能的需要&#xff0c;轮胎表面常会加工出不同形状的花纹。在设计轮胎时&#xff0c;往往要针对其使用环境&#xff0c;设计出相应的花纹形状。   第二阶段问…