类的静态成员函数和静态成员变量的使用
当将类的某个数据成员声明为static时,该静态数据成员只能被定义一次,而且要被同类的所有对象共享。各个对象都拥有类中每一个普通数据成员的副本,但静态数据成员只有一个实例存在,与定义了多少类对象无关。静态方法就是与该类相关的,是类的一种行为,而不是与该类的实例对象相关。
静态成员函数可以直接访问该类的静态数据和函数成员,而访问非静态数据成员必须通过参数传递的方式得到一个对象名,然后通过对象名来访问。
class Myclass { private: int a,b,c; static int Sum; //声明静态数据成员 public: Myclass(int a,int b,int c); void GetSum(); }; int Myclass::Sum=0; //定义并初始化静态数据成员 Myclass::Myclass(int a,int b,int c) { this->a=a; this->b=b; this->c=c; Sum+=a+b+c; } void Myclass::GetSum() { cout <<"Sum=" <<Sum <<endl; } int main(void) { Myclass me(10,20,30); me.GetSum(); system("pause"); return 0; }
由上例可知,非静态成员函数可以任意地访问静态成员函数和静态数据成员。 非静态成员函数Myclass(int a,int b,int c)和GetSum()都访问了静态数据成员Sum。 静态成员函数不能访问非静态成员函数和非静态数据成员。
关于静态成员函数,可以总结为以下几点: 出现在类体外的函数定义不能指定关键字static; 静态成员之间可以相互访问,包括静态成员函数访问静态数据成员和访问静态成员函数; 非静态成员函数可以任意地访问静态成员函数和静态数据成员; 静态成员函数不能访问非静态成员函数和非静态数据成员; 由于没有this指针的额外开销,因此静态成员函数与类的全局函数相比速度上会有少许的增长; 调用静态成员函数,可以用成员访问操作符(.)和(->)为一个类的对象或指向类对象的指针调用静态成员函数, 当同一类的所有对象使用一个量时,对于这个共用的量,可以用静态数据成员变量,这个变量对于同一类的所有的对象都取相同的值。静态成员变量只能被静态成员函数调用。静态成员函数也是由同一类中的所有对象共用。只能调用静态成员变量和静态成员函数。
转载于:https://www.cnblogs.com/hualimengyu/p/3739599.html
类的静态成员函数和静态成员变量的使用相关推荐
- c语言静态成员变量重名会怎么样,C++中静态成员函数与静态成员变量(static )...
C++中静态成员函数与静态成员变量(static ) 这篇介绍了静态成员函数与静态成员变量,是我的读书笔记,我希望它够简短但又比较全面,起到复习的作用.如果有一些C++知识记不清楚了,它可以帮你很快回 ...
- 友元函数、类的非静态成员函数、静态成员函数的区别
类中申明的函数相对于类来说有三层意思: 1.有this指针 2.函数在类的作用区域中 3.可以访问类中私有部分 4.可以被继承 非静态成员函数具有1234 静态成员函数具有234 友元函数具有3 静态 ...
- 静态成员函数与静态成员变量
此文针对于初学者或者对这一部分掌握不太清楚的人. 首先静态成员函数的声明: static void setName(QString name); 需要在函数的声明前加static关键字. 定义的时候和 ...
- 静态成员函数与成员变量_C++静态成员变量及函数
没有很快乐,也没有不快乐,好像不该这样,但也只能这样,成长也许如此,行于奔溃边缘又慢慢自愈吧... ---- 网易云热评 一.静态成员变量 1.普通成员变量属于对象,每个对象都会包含一份独立的普通成 ...
- C++静态成员函数与静态成员变量
静态成员函数的作用 调用这个函数不会访问或者修改任何对象(非static)数据成员 不需要生成对象就能调用 原因: 类的静态成员(变量/方法)属于类本身,在类加载的时候就会分配内存,可以通过类名直接去 ...
- C++_类和对象_对象特性_成员变量占用对象内存_成员函数_静态成员函数_静态变量_都不占用对象内存_他们是分开存储的---C++语言工作笔记048
然后我们来看c++中的,类的对象的大小,类中的成员变量和函数的存储问题. 首先我写个空类 然后在类外写个test01这个函数,然后 在main方法中调用这个test01这个函数
- 类中的静态成员变量和静态成员函数
static静态成员函数 1.static 修饰成员变量 2.static修饰静态成员函数 引子: 静态成员函数: 注意: 3.const 修饰静态成员 静态成员案例 案例1:静态成员 统计类 实例化 ...
- 【C++基础学习】关于C++静态成员函数和变量
代码一: class Point{ public:void output(){}static void init(){} }; int main() {Point pt;pt.init();pt.ou ...
- 13.C++-静态成员变量、静态成员函数
首先回顾下成员变量 能通过对象名能够访问public成员变量 每个对象的成员变量都是专属的 成员变量不能在对象之间共享 再来讲讲类的静态成员变量 介绍 静态成员变量属于整个类所有 静态成员变量的生命期 ...
最新文章
- mysql left join超时,MySQL 行锁超时排查方法优化
- snort源码的详细分析
- 给linux下网站目录配置SFTP
- html设置粗体字,如何在HTML输出中设置粗体字段
- 开始使用Power BI桌面
- JSTL 表达式与 EL 语言
- 消息服务器mq集群出现假死,排查tomcat项目假死原因的简单方法
- R2017b-Matlab安装教程
- 计算机应用教程 卢湘鸿答案,计算机应用教程(Windows 2000环境)习题解答与实验指导...
- 【学习笔记】python实现图像的手绘效果
- Photoshop-置换贴图-原理
- 深度学习之学习(1-3)Bag of Features (BOF)图像检索算法
- 异常:The JSP specification requires that an attribute name is preceded by whitespace
- js监听iframe是否加载完毕
- Java多线程同步和异步详解
- 刚入职场需要用到的5个顶尖自学网
- 3.3 将列表[mo,deng,ge]和[1,2,3] 转换成[(mo,1),(deng,2),(ge,3)]
- 主机访问虚拟机中docker安装的mysql
- 重邮大学计算机基础考试试题及答案,重庆邮电大学《大学计算机基础(2015》考试试卷.pdf...
- 创建物料凭证 BAPI_GOODSMVT_CREATE
热门文章
- CIF进口货物流程图_广州进口报关公司阿根廷红酒上海进口清关成本选择聚海
- LDA的Gibbs抽样详细推理与理解
- 边缘检测之Canny
- 摄影测量--点位精度评定
- 算法竞赛中的时间复杂度选择——以最大连续和问题为例
- JavaEE 搜索解决问题集合---会不断更新的
- Namomo Spring Camp Div2 Week1 - 第四次打卡
- 单频和混频是什么意思_科研| 谐波混频器常见电路小结
- 趋势科技云安全软件_阿里达摩院发布2020十大科技趋势!量子计算、类脑计算系统崛起...
- python中groupby()函数讲解与示例_详解python中groupby函数通俗易懂