5.4静态成员
关键字static可以用于说明一个类的成员。
静态成员提供了一个同类对象的共享机制
把一个类的成员说明为static时,这个类无论有多少个对象被创建,这些对象共享这个static成员。
静态成员局部于类,它不是对象成员。
静态数据成员只能说明一次,如果在类中仅对静态数据成员进行声明,则必须在文件作用域的某个地方进行定义。在进行初始化时,必须进行成员名限定。
error: C2864: “mywindow::num”: 带有类内初始值设定项的静态 数据成员 必须具有不可变的常量整型
1 class mywindow 2 { 3 public: 4 static int num=0;//error: C2864: “mywindow::num”: 带有类内初始值设定项的静态 数据成员 必须具有不可变的常量整型 5 };
静态成员函数
静态成员函数冠以关键字static。
静态成员函数提供不依赖于类数据结构的共同操作,它没有this指针。
在类外部调用成员函数用“类名::”作限定词,或通过对象调用。
静态成员函数不需要实例化就可以调用。
类的数据成员变量可以有默认值,C++11支持
1 #include <iostream> 2 3 class goodclass 4 { 5 public: 6 int num = 1;//默认初始化的值,C++11 7 const int data = 90; 8 public: 9 static void show(goodclass & good1)//静态成员函数 10 { 11 std::cout << good1.num << " " << good1.data << std::endl; 12 } 13 }; 14 15 void main() 16 { 17 goodclass good1; 18 19 goodclass::show(good1); 20 21 system("pause"); 22 }