类中的静态成员
1、静态数据成员
- 静态数据成员可以初始化,但只能在类体外进行初始化。除非被声明为const
1 class Time 2 { 3 public: 4 Time(int h,int m,int s,int tz):timezone(tz){} //error,无法通过构造函数初始化静态数据成员 5 void printTime(); 6 static int timezone=1; //error:只有静态常量整型数据成员才可以在类中初始化 7 const static int timezone=1; //ok 8 9 private: 10 int hou; 11 int min; 12 int sec; 13 }; 14 15 int Time::timezone=1; //ok,static数据成员类外初始化,不能在初始化语句中加static关键字
- 无法通过构造函数初始化static成员
2、静态成员函数
- 与静态数据成员一样,静态成员函数与类关联,而不是与该类的对象相关联
- 静态成员函数没有this指针,由此决定了静态成员函数(默认)不能访问本类中的非静态成员
- 静态成员函数可以直接引用本类中的静态数据成员,因为静态成员同样属于类,可以直接引用
- static成员函数不能被声明为const,也不能被声明为虚函数