当类中只有一个int成员时,这个类的大小为4,。
但是类中只有一个静态int成员时,这个类的大小为1。
#include<iostream>
using namespace std;
class CPerson //只有一个int成员时
{
public:
int num;
};
int main()
{
cout << sizeof(CPerson) << endl;
system("pause");
return 0;
}
#include<iostream>
using namespace std;
class CPerson //只有一个static成员时
{
public:
static int num;
};
int main()
{
cout << sizeof(CPerson) << endl;
system("pause");
return 0;
}
#include<iostream>
using namespace std;
class CPerson //只有一个static成员时
{
public:
static int num; //编译期存在
};
int CPerson::num = 100; //static成员变量需要在类外初始化
int main()
{
cout << CPerson::num << endl;
CPerson ps;
cout << ps.num << endl;
system("pause");
return 0;
}
static变量只有一个,意思是所有的对象共享一个。
#include<iostream>
using namespace std;
class CPerson //只有一个static成员时
{
public:
static int num; //编译期存在
};
int CPerson::num = 100; //static成员变量需要在,类外初始化
int main()
{
cout << CPerson::num << endl;
CPerson ps;
ps.num = 123;
CPerson ps1;
cout << ps1.num << endl;
system("pause");
return 0;
}
static函数中不能使用非static函数成员。
因为static函数里面没有this指针。
我们可以使用static变量的特性,统计创建的对象个数。
#include<iostream>
using namespace std;
class CPerson //只有一个static成员时
{
private:
static int nCount;
public:
CPerson()
{
nCount++;
}
static int GetCount()
{
return nCount;
}
};
int CPerson::nCount = 0;
int main()
{
cout << CPerson::GetCount() << endl;
CPerson ps1;
CPerson ps2;
{
CPerson ps3;
}
cout << CPerson::GetCount() << endl;
system("pause");
return 0;
}