类的静态成员
类的静态成员是类的组成部分但不是任何对象的组成部分,在声明的时候在成员前面加上static将该成员变为静态成员。可以在类的作用域外直接访问静态成员,只需在前面加上类名和::
静态数据成员
静态数据成员具有全局生存周期,类的所有对象共享储存空间。
静态数据成员不能通过构造函数进行初始化,而是必须在类外面定义一次。
class Int
{
static int num;
int data;
};
int Int::num = 0;//在类外又定义了一次
静态函数
静态成员函数不属于任何对象,没有this指针,不能直接访问类的非静态成员,只能直接访问类的静态数据或函数成员
函数当然也为静态函数,与静态数据成员不同的是不用在类外面定义一次,使用时要记得加上类名和::
class Int
{
static int num;
int data;
public:
static int isodd(int n){
if(n % 2 == 0){
return 0;
}
else{
return 1;
}
}
};
cout << "num " << i1 << " is odd? " << Int::isodd(1) << endl;
cout << "num " << i2 << " is odd? " << Int::isodd(2) << endl;
如果未定义静态函数,则会出现以下报错:
cannot call member function 'Int Int::isodd(int)' without object
由于学习不精,文章有不正确的地方望读者指正。