静态成员
1. 静态成员的作用与优点
- 实现同类多个对象之间数据共享
- 静态成员的名字在类的作用域中,可以避免与其他类或全局对象的名字冲突
- 静态成员可以实施封装,可以是私有成员,全局对象不可以
- 静态成员与特定类关联,结构清晰
2. 静态数据成员
-
定义形式
class Employee{ private: int empNo; int id; char *name; static int count; //静态数据成员 // static 数据成员类型 数据成员列表; };
-
静态数据成员存储示意
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eoISaunh-1617073173068)(D:\Pictures\静态数据成员存储示意.png)]
说明:
静态数据成员独立于该类的任何对象,占单独的空间存储
静态数据成员可以在未建立对象时就被引用
访问静态成员同样遵守公有和私有访问规则
静态成员必须在类外部定义一次(仅有一次)
数据成员类型 类名::静态数据成员名=初始化式
静态数据成员可用作默认实参
class Data{ Data & setbkcolor(int bkcolor); static const int bkcolor = 5; };
3. 静态成员函数
-
定义形式
class Data{ public: static int getcount() { return count; } // static 返回类型 函数名(类型 参数); }
-
调用方式
-
类作用域运算符
Data::getcount();
-
通过对象名调用静态成员函数
-
-
静态成员函数与非静态成员函数的区别
非静态成员函数有this指针,二静态成员函数没有this指针,静态成员函数就是专门为了访问静态数据成员的, 静态成员函数不能被声明为const