以下内容源于慕课网的学习整理,如有侵权,请告知删除。
1、静态数据成员
(1)不同于普通的数据成员,静态数据成员在没有实例化时,它也是存在的(即它是和类共存的);
(2)它一般不依赖于构造函数的初始化,而往往是单独进行初始化的。
(3)访问方式
2、静态成员函数
(1)静态成员函数不能使用普通的成员函数
- 因为静态成员函数是随着类定义时就已经有了,而那时候还没有使用类来实例化对象。这是时机不对导致的问题。
(2)从this指针谈静态成员函数(待补充!)
3、注意事项
(1)静态数据成员必须单独初始化。因为静态数据成员是随着类的产生而产生的,不是随着对象产生而产生的,因此构造函数对它不起作用。
(2)静态成员函数不能调用非静态成员函数,以及非静态的数据成员。但反过来,普通成员函数可以调用静态成员函数和静态数据成员。
(3)静态数据成员只有一份,且不依赖对象而存在。
(4)使用sizeof计算对象的大小时,计算内容并不包含静态数据成员。
(5)静态成员函数后面不能加const。
- 因为const的实质是const 类名* this。由于静态成员函数都没有this指针。
可以这样看,静态数据成员不属于任何一个类的对象,只是类的对象可以修改它而已。