CPP学习之——静态成员变量(17.1)
一 概述
- 从本章节开始我们将学习类中的一些特殊成员,这些成员分为三大种——变量、函数和指针
- 本节我们将接触类的第一个特殊成员——静态成员变量或者或静态成员数据
二 静态成员变量与对象变量区分
- 在此之前,我们学到的类的对象中的变量一般都是这个对象所专有的,它是该对象区别于其他对象的一个标志。不能为其他对象共享使用
- 比如说:张三身高180CM,体重75KG,年龄21,性别:男,这些数据实例化了张三这个具体的对象,也是他区别于李四和其他人的标志。因此这些数据必须为张三这个对象专有化,否则所有的对象都会与他混淆不清
- 但是另外我们也许会碰到这样的情况,就是需要统计某个类共有多少个对象,比如说一个班是一个类,每个学生是该班级的一个对象,我们除了要区别每个对象之外,还要统计该班共有多少个学生。显然对象中的成员变量是不能为我们做到这一点,因此我们就需要一种新的数据类型,它在本班的所有对象中都是可以被共享使用的,这就是静态成员变量
三 示例演示及结果输出
3.1 代码
1 | #include<iostream> |
3.2 输出结果
1 | 该类有5个对象 |
四 示例演示及结果输出二
4.1 代码
1 | #include<iostream> |
4.2 输出结果
1 | a.total:3 b.total:3 c.total:3 |
五 示例演示及结果三
5.1 代码
1 | #include<iostream> |
5.2 输出结果
1 | 1 |
5.3 说明
- 该例没有创建一个对象,但是你却可以通过类名和限定符访问静态变量total并且对其进行自加操作,这说明静态变量在没有对象之前就存在
六 总结
- 第一:静态成员变量是属于整个类的全局变量,它不但属于某个对象,普通成员变量是属于类中对象的变量,它不能被所有对象共享
- 第二:静态成员变量必须在全局进行定义,而成员变量由于是属于该类某个对象的,而不是属于整个类的,因此不用再全局进行定义
- 第三:在使用静态成员变量时,可以不限定为某个具体的对象,只与类连用即可。如:A::total.而不用:A a;a.total
- 第四:静态成员在没有对象之前就存在