静态成员函数的作用

  • 调用这个函数不会访问或者修改任何对象(非static)数据成员
  • 不需要生成对象就能调用

原因:
类的静态成员(变量/方法)属于类本身,在类加载的时候就会分配内存,可以通过类名直接去访问。
非静态成员(变量/方法)属于类的对象,只有在类的对应产生(类的实例化被创建)时才会分配内存,然后通过类的实例化对象去访问。


静态成员变量

  • 静态成员变量先于对象存在,因此静态成员变量要再类外初始化
  • 静态成员变量归整个类所有
  • 可以通过类名直接访问共有静态成员变量
  • 类的所有对象共享类的静态成员变量

静态成员函数

  • 类的静态成员函数只能访问静态成员变量、静态成员函数(因为它不接受this指针,智能访问类的static成员)
  • 可以通过类名访问类的共有静态成员函数
  • 可以通过对象名访问类的共有静态成员函数
  • 静态成员函数不能被virtual修饰,因为静态成员只属于类,不属于任何类的实例化,因此没有任何实际意义。
class mybook
{public:static int width;static int page_num;static void print(){cout<<"书本的页数为:"<<page_num<<endl;}
};
int mybook::page_num = 10;
int mybook::width = 100;
int main() {mybook book1;book1.print();mybook::page_num = 15;book1.print();mybook book12;book12.print();return 0;
}

C++静态成员函数与静态成员变量相关推荐

  1. c语言静态成员变量重名会怎么样,C++中静态成员函数与静态成员变量(static )...

    C++中静态成员函数与静态成员变量(static ) 这篇介绍了静态成员函数与静态成员变量,是我的读书笔记,我希望它够简短但又比较全面,起到复习的作用.如果有一些C++知识记不清楚了,它可以帮你很快回 ...

  2. 友元函数、类的非静态成员函数、静态成员函数的区别

    类中申明的函数相对于类来说有三层意思: 1.有this指针 2.函数在类的作用区域中 3.可以访问类中私有部分 4.可以被继承 非静态成员函数具有1234 静态成员函数具有234 友元函数具有3 静态 ...

  3. 静态成员函数与静态成员变量

    此文针对于初学者或者对这一部分掌握不太清楚的人. 首先静态成员函数的声明: static void setName(QString name); 需要在函数的声明前加static关键字. 定义的时候和 ...

  4. 类的静态成员函数和静态成员变量的使用

    当将类的某个数据成员声明为static时,该静态数据成员只能被定义一次,而且要被同类的所有对象共享.各个对象都拥有类中每一个普通数据成员的副本,但静态数据成员只有一个实例存在,与定义了多少类对象无关. ...

  5. 静态成员函数与成员变量_C++静态成员变量及函数

    没有很快乐,也没有不快乐,好像不该这样,但也只能这样,成长也许如此,行于奔溃边缘又慢慢自愈吧... ----  网易云热评 一.静态成员变量 1.普通成员变量属于对象,每个对象都会包含一份独立的普通成 ...

  6. C++_类和对象_对象特性_成员变量占用对象内存_成员函数_静态成员函数_静态变量_都不占用对象内存_他们是分开存储的---C++语言工作笔记048

    然后我们来看c++中的,类的对象的大小,类中的成员变量和函数的存储问题. 首先我写个空类 然后在类外写个test01这个函数,然后 在main方法中调用这个test01这个函数

  7. 【C++基础学习】关于C++静态成员函数和变量

    代码一: class Point{ public:void output(){}static void init(){} }; int main() {Point pt;pt.init();pt.ou ...

  8. 13.C++-静态成员变量、静态成员函数

    首先回顾下成员变量 能通过对象名能够访问public成员变量 每个对象的成员变量都是专属的 成员变量不能在对象之间共享 再来讲讲类的静态成员变量 介绍 静态成员变量属于整个类所有 静态成员变量的生命期 ...

  9. C++的静态成员变量和静态成员函数

    C++的静态成员变量和静态成员函数 静态成员变量和静态成员函数算是C++面向对象编程中的一个重点和难点,这里的静态具体指什么呢?与普通的成员变量和成员函数相比,静态成员函数和静态成员变量是属于类的,而 ...

最新文章

  1. Rancher通过Aliyun-slb服务对接阿里云SLB教程
  2. java读取src路径下的txt文件_Java程序使用Maven后无法运行?
  3. 【Linux】一步一步学Linux——visudo命令(104)
  4. 基于TensorFlow Lite的人声识别在端上的实现
  5. websocket学习笔记
  6. jquery ui动态切换主题的一种实现方式
  7. CentOS用户和用户组的操作
  8. Linux常用命令(第二版) --网络通信命令
  9. 资料:vue 3.0+版本发布
  10. 中关村在线 测试软件,主观测试软件:ZOL Monitor LCD 简介
  11. coco 数据集_Tensorflow对COCO目标检测数据预处理
  12. win10笔记本已连接充电器却不显示连接怎么解决?
  13. 提取Unity游戏资源和脚本
  14. Aizu - 2249
  15. 用Rufus 3.0.1304把Windows 10 装入移动硬盘
  16. 十种常用的的数据分析思路,你都知道吗?
  17. Third season fifth episode,Phoebe‘s brother Frank came to see her
  18. Android 仿soul首页星球旋转,可上下左右方向旋转
  19. C语言循环语句——while、for、do while
  20. C++希尔密码的实现以及运用

热门文章

  1. 转:张五常:比知识更重要的,是思维方式
  2. linux分区方案 1t,linux CentOS WEB服务器分区方案
  3. 如何在职场中更快地成长
  4. matlab自适应amc,自适应调制解调(ACM),Adaptive modulation and coding (AMC),音标,读音,翻译,英文例句,英语词典...
  5. 【学习笔记】Transformers库笔记
  6. 小米笔记本目前仅win10系列系统支持触摸板
  7. 全球及中国少儿图书出版行业经营策略与投资竞争力研究报告2022-2028年
  8. Myricetin/Myricitrin 杨梅素/杨梅苷98%,杨梅提取物
  9. w ndows无法启动wlan,解决Win7无法启动"WLAN AutoConfig"服务的问题
  10. 简单步骤:Android studio 内容观察者 - 实现数据变化监测