C++静态成员函数与静态成员变量
静态成员函数的作用
- 调用这个函数不会访问或者修改任何对象(非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++静态成员函数与静态成员变量相关推荐
- c语言静态成员变量重名会怎么样,C++中静态成员函数与静态成员变量(static )...
C++中静态成员函数与静态成员变量(static ) 这篇介绍了静态成员函数与静态成员变量,是我的读书笔记,我希望它够简短但又比较全面,起到复习的作用.如果有一些C++知识记不清楚了,它可以帮你很快回 ...
- 友元函数、类的非静态成员函数、静态成员函数的区别
类中申明的函数相对于类来说有三层意思: 1.有this指针 2.函数在类的作用区域中 3.可以访问类中私有部分 4.可以被继承 非静态成员函数具有1234 静态成员函数具有234 友元函数具有3 静态 ...
- 静态成员函数与静态成员变量
此文针对于初学者或者对这一部分掌握不太清楚的人. 首先静态成员函数的声明: static void setName(QString name); 需要在函数的声明前加static关键字. 定义的时候和 ...
- 类的静态成员函数和静态成员变量的使用
当将类的某个数据成员声明为static时,该静态数据成员只能被定义一次,而且要被同类的所有对象共享.各个对象都拥有类中每一个普通数据成员的副本,但静态数据成员只有一个实例存在,与定义了多少类对象无关. ...
- 静态成员函数与成员变量_C++静态成员变量及函数
没有很快乐,也没有不快乐,好像不该这样,但也只能这样,成长也许如此,行于奔溃边缘又慢慢自愈吧... ---- 网易云热评 一.静态成员变量 1.普通成员变量属于对象,每个对象都会包含一份独立的普通成 ...
- C++_类和对象_对象特性_成员变量占用对象内存_成员函数_静态成员函数_静态变量_都不占用对象内存_他们是分开存储的---C++语言工作笔记048
然后我们来看c++中的,类的对象的大小,类中的成员变量和函数的存储问题. 首先我写个空类 然后在类外写个test01这个函数,然后 在main方法中调用这个test01这个函数
- 【C++基础学习】关于C++静态成员函数和变量
代码一: class Point{ public:void output(){}static void init(){} }; int main() {Point pt;pt.init();pt.ou ...
- 13.C++-静态成员变量、静态成员函数
首先回顾下成员变量 能通过对象名能够访问public成员变量 每个对象的成员变量都是专属的 成员变量不能在对象之间共享 再来讲讲类的静态成员变量 介绍 静态成员变量属于整个类所有 静态成员变量的生命期 ...
- C++的静态成员变量和静态成员函数
C++的静态成员变量和静态成员函数 静态成员变量和静态成员函数算是C++面向对象编程中的一个重点和难点,这里的静态具体指什么呢?与普通的成员变量和成员函数相比,静态成员函数和静态成员变量是属于类的,而 ...
最新文章
- Rancher通过Aliyun-slb服务对接阿里云SLB教程
- java读取src路径下的txt文件_Java程序使用Maven后无法运行?
- 【Linux】一步一步学Linux——visudo命令(104)
- 基于TensorFlow Lite的人声识别在端上的实现
- websocket学习笔记
- jquery ui动态切换主题的一种实现方式
- CentOS用户和用户组的操作
- Linux常用命令(第二版) --网络通信命令
- 资料:vue 3.0+版本发布
- 中关村在线 测试软件,主观测试软件:ZOL Monitor LCD 简介
- coco 数据集_Tensorflow对COCO目标检测数据预处理
- win10笔记本已连接充电器却不显示连接怎么解决?
- 提取Unity游戏资源和脚本
- Aizu - 2249
- 用Rufus 3.0.1304把Windows 10 装入移动硬盘
- 十种常用的的数据分析思路,你都知道吗?
- Third season fifth episode,Phoebe‘s brother Frank came to see her
- Android 仿soul首页星球旋转,可上下左右方向旋转
- C语言循环语句——while、for、do while
- C++希尔密码的实现以及运用
热门文章
- 转:张五常:比知识更重要的,是思维方式
- linux分区方案 1t,linux CentOS WEB服务器分区方案
- 如何在职场中更快地成长
- matlab自适应amc,自适应调制解调(ACM),Adaptive modulation and coding (AMC),音标,读音,翻译,英文例句,英语词典...
- 【学习笔记】Transformers库笔记
- 小米笔记本目前仅win10系列系统支持触摸板
- 全球及中国少儿图书出版行业经营策略与投资竞争力研究报告2022-2028年
- Myricetin/Myricitrin 杨梅素/杨梅苷98%,杨梅提取物
- w ndows无法启动wlan,解决Win7无法启动"WLAN AutoConfig"服务的问题
- 简单步骤:Android studio 内容观察者 - 实现数据变化监测