类的静态数据成员和静态成员函数
一.什么是类的静态成员
静态成员变量和全局变量都存储在全局/静态区,它们都是在程序编译时创建,直到编译结束才被收回.所以全局变量和静态成员变量的功能差不多,只是创建的方式不同,类的静态成员创建在类中,全局变量创建在程序开头.
二.为什么要用类的静态成员而不用全局变量
全局变量在c中得心应手,而在c++中却力不从心.全局变量定义在程序开头,一旦全局变量多了,就会降低程序的可读性,并且这样定义变量会使程序变得很不安全.而
三.怎样创建类的静态成员
首先在human.h头文件的类中声明静态数据成员,但是不能初始化.
static int humanCount;
然后在human.cpp源文件中初始化静态成员,初始化时不需要写static
int Human::humanCount = 0;
四.什么是静态成员函数
静态成员函数和静态数据成员一样,属于类的,不是属于某个具体对象的.
五.为什么用静态成员函数
静态数据成员存在bug,此bug就是静态数据成员函数可以被任何函数修改,并且必须要创建具体的对象才能调用该函数.首先安全性很低,其次必须要创建一个不必用的对象才能用函数,浪费资源.
类的静态数据成员和静态成员函数就像故宫一样,人人都能去,并且不属于某个个人.调用静态成员函数时只需要用类名调用即可,节省资源.但是类名不能直接调用静态数据成员.
首先在human.h头文件的类中声明静态成员函数.
static int getHumanCount();
然后在human.cpp源文件中定义静态成员函数,定义时不需要写static
int Human::getHumanCount() {return humanCount;
}
然后在main.cpp源文件中调用静态成员函数
void showMsg() {cout << Human::getHumanCount() << endl;
}
五.总结
1)静态数据成员:
所有的成员函数,都可以访问静态数据成员.
类和对象不能直接访问普通的静态数据成员(Human::humanCount非法)
2)静态成员函数
类和对象都可以访问静态成员函数(Human::getHumanCount())
静态成员函数无法访问类的非静态数据成员(如:静态成员函数访问age时,他就蒙了,不知道到底要访问哪个age,因此这是非法的),静态成员函数只能访问属于类的,不能访问具体对象所有的属性,因为静态成员函数不知道是哪一个的.
静态成员函数只能访问类的静态成员函数.
类的静态数据成员和静态成员函数相关推荐
- C++类的静态数据成员和静态成员函数
目录 公有属性 静态数据成员 静态成员函数 公有属性 一些类对象可能会具有一些相同的属性,如果用普通数据成员来描述这些相同的属性,这意味着我们需要给每个对象的这个数据成员设定相同的值,如果改变类对象相 ...
- 类的静态数据成员和静态成员函数浅析
一.静态数据成员 类中的数据成员声明前加上static,则表示该数据成员为静态数据成员.除了与其他数据具有相同的public/private/protect访问属性外,还有一些其他的属性 ...
- [C++] 类的静态成员 (静态数据成员 和 静态成员函数)
目录 一.声明静态成员: 二.定义静态成员: 三.使用类的静态成员: 四.静态成员类内初始化: 五.静态成员与普通成员的区别: 六.案例代码: 类内的静态成员包括: 静态数据成员 和 静态成员函数. ...
- 静态数据成员与静态成员函数
3-6 静态数据成员与静态成员函数 Time Limit: 1000MS Memory limit: 65536K 题目描述 通过本题目的练习可以掌握静态数据成员和静态成员函数的用法 要求设计一个点类 ...
- 3-6 静态数据成员与静态成员函数
3-6 静态数据成员与静态成员函数 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Description 通过本题 ...
- C++学习(五) 静态数据成员和静态成员函数
文章目录 1.静态成员: 1.1.说明 1.2.格式 2.静态成员函数 2.1.说明 2.2.格式 1.静态成员: 1.1.说明 静态成员包括静态数据和静态成员函数. (1).静态数据成员的定义与普通 ...
- 静态数据成员和静态成员函数
转载自:https://blog.csdn.net/computer_liuyun/article/details/29235111 c++中的static静态数据成员和静态成员函数应该是让大家比较头 ...
- 静态数据成员和静态成员函数(static)
目录 一.关于静态成员 二.静态数据成员和普通数据成员的共同点 三.为什么要使用静态数据成员 四.关于静态数据成员的初始化 五. 静态成员的访问方式 六.静态成员函数 1.与静态数据成员不同,静态成员 ...
- 【C++之静态数据成员和静态成员函数】计算商品总销售款和平均售价
题目要求 商店销售某一商品,商店每天公布统一的折扣(discount).同时允许销售人员在销售时灵活掌握售价(price),在此基础上,对一次购 10 件以上者,还可以享受 9.8 折优惠.现已知当天 ...
最新文章
- 64位Ubuntu上编译32位程序操作步骤
- Linux文件系统只读Read-only file system
- java 语言概述(零)
- ajax post forbidden,POST方法总是返回403 Forbidden
- 1_3 SingletonMode 单例模式
- 图片照片展示html5模板
- 对Session、Cookie的完全理解
- 新建一个html页 必须要有的标签 (meta)
- html++hint标签,html5新标签总结
- Ubuntu 安装rabbitvcs
- Lodop打印参数方法参考
- 网页游戏打击感实施要点
- rpa项目poc_RPA POC概述
- 如何设计网页排版和样式 - 前端页面设计
- R中怎么做加权最小二乘_R方的理解与用法
- 文件上传插件WebUploader的使用
- 今日头条页面图片获取
- 三元组损失(Triplet loss)
- DNS配置异常无法上网(明明有网,但是网页打不开了?)
- 浪潮服务器系统raid5,浪潮服务器RAID配置及系统引导.doc
热门文章
- vgsales游戏销售数据分析
- 分布式-Secur-网络 个人笔记
- 年薪50w+的软件测试工程师是怎么炼成的?
- MYSQL主从同步的作用
- 51单片机汇编语言实验(五)-----A/D 0809模数转换和DA0832数模转换实验(附参考代码及注释)
- 快狗打车的失败:B端弃甲,C端追不上
- 【深度学习】MLP/LeNet/AlexNet/GoogLeNet/ResNet在三个不同数据集上的分类效果实践
- vmospro启动黑屏_vmospro下载-VMOSPro 安卓版v1.1.28-PC6安卓网
- [JSOI2019]节日庆典
- VC6.0打开崩溃,filetool解决办法[超详细]