类中的静态成员

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,也不能被声明为虚函数

posted on 2015-10-06 16:01  conard  阅读(152)  评论(0编辑  收藏  举报