一.什么是类的静态成员
静态成员变量和全局变量都存储在全局/静态区,它们都是在程序编译时创建,直到编译结束才被收回.所以全局变量和静态成员变量的功能差不多,只是创建的方式不同,类的静态成员创建在类中,全局变量创建在程序开头.

二.为什么要用类的静态成员而不用全局变量
全局变量在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,因此这是非法的),静态成员函数只能访问属于类的,不能访问具体对象所有的属性,因为静态成员函数不知道是哪一个的.
静态成员函数只能访问类的静态成员函数.

类的静态数据成员和静态成员函数相关推荐

  1. C++类的静态数据成员和静态成员函数

    目录 公有属性 静态数据成员 静态成员函数 公有属性 一些类对象可能会具有一些相同的属性,如果用普通数据成员来描述这些相同的属性,这意味着我们需要给每个对象的这个数据成员设定相同的值,如果改变类对象相 ...

  2. 类的静态数据成员和静态成员函数浅析

    一.静态数据成员        类中的数据成员声明前加上static,则表示该数据成员为静态数据成员.除了与其他数据具有相同的public/private/protect访问属性外,还有一些其他的属性 ...

  3. [C++] 类的静态成员 (静态数据成员 和 静态成员函数)

    目录 一.声明静态成员: 二.定义静态成员: 三.使用类的静态成员: 四.静态成员类内初始化: 五.静态成员与普通成员的区别: 六.案例代码: 类内的静态成员包括: 静态数据成员 和 静态成员函数. ...

  4. 静态数据成员与静态成员函数

    3-6 静态数据成员与静态成员函数 Time Limit: 1000MS Memory limit: 65536K 题目描述 通过本题目的练习可以掌握静态数据成员和静态成员函数的用法 要求设计一个点类 ...

  5. 3-6 静态数据成员与静态成员函数

    3-6 静态数据成员与静态成员函数 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Description 通过本题 ...

  6. C++学习(五) 静态数据成员和静态成员函数

    文章目录 1.静态成员: 1.1.说明 1.2.格式 2.静态成员函数 2.1.说明 2.2.格式 1.静态成员: 1.1.说明 静态成员包括静态数据和静态成员函数. (1).静态数据成员的定义与普通 ...

  7. 静态数据成员和静态成员函数

    转载自:https://blog.csdn.net/computer_liuyun/article/details/29235111 c++中的static静态数据成员和静态成员函数应该是让大家比较头 ...

  8. 静态数据成员和静态成员函数(static)

    目录 一.关于静态成员 二.静态数据成员和普通数据成员的共同点 三.为什么要使用静态数据成员 四.关于静态数据成员的初始化 五. 静态成员的访问方式 六.静态成员函数 1.与静态数据成员不同,静态成员 ...

  9. 【C++之静态数据成员和静态成员函数】计算商品总销售款和平均售价

    题目要求 商店销售某一商品,商店每天公布统一的折扣(discount).同时允许销售人员在销售时灵活掌握售价(price),在此基础上,对一次购 10 件以上者,还可以享受 9.8 折优惠.现已知当天 ...

最新文章

  1. 64位Ubuntu上编译32位程序操作步骤
  2. Linux文件系统只读Read-only file system
  3. java 语言概述(零)
  4. ajax post forbidden,POST方法总是返回403 Forbidden
  5. 1_3 SingletonMode 单例模式
  6. 图片照片展示html5模板
  7. 对Session、Cookie的完全理解
  8. 新建一个html页 必须要有的标签 (meta)
  9. html++hint标签,html5新标签总结
  10. Ubuntu 安装rabbitvcs
  11. Lodop打印参数方法参考
  12. 网页游戏打击感实施要点
  13. rpa项目poc_RPA POC概述
  14. 如何设计网页排版和样式 - 前端页面设计
  15. R中怎么做加权最小二乘_R方的理解与用法
  16. 文件上传插件WebUploader的使用
  17. 今日头条页面图片获取
  18. 三元组损失(Triplet loss)
  19. DNS配置异常无法上网(明明有网,但是网页打不开了?)
  20. 浪潮服务器系统raid5,浪潮服务器RAID配置及系统引导.doc

热门文章

  1. vgsales游戏销售数据分析
  2. 分布式-Secur-网络 个人笔记
  3. 年薪50w+的软件测试工程师是怎么炼成的?
  4. MYSQL主从同步的作用
  5. 51单片机汇编语言实验(五)-----A/D 0809模数转换和DA0832数模转换实验(附参考代码及注释)
  6. 快狗打车的失败:B端弃甲,C端追不上
  7. 【深度学习】MLP/LeNet/AlexNet/GoogLeNet/ResNet在三个不同数据集上的分类效果实践
  8. vmospro启动黑屏_vmospro下载-VMOSPro 安卓版v1.1.28-PC6安卓网
  9. [JSOI2019]节日庆典
  10. VC6.0打开崩溃,filetool解决办法[超详细]