static 成员变量是作用于整个类的,存储区是静态区,并不占用类的大小。
class AA
{
public:
AA(int a, int b)
{
m_a = a;
m_b = b;
}
int getC()
{
m_c++;
return m_c;
}
//静态的成员方法
static int& getCC()
{
return m_c;
}
private:
//static修饰的静态成员变量
static int m_c;
int m_a;
int m_b;
};
//静态成员变量的初始化,一定类的外边。
int AA::m_c = 100;
int main(void)
{
AA a1(10, 20);
AA a2(100, 200);
cout << a1.getC() << endl;//101
cout << a2.getC() << endl;//102
//a1.getCC() = 200;
AA::getCC() = 200;
cout << a1.getC() << endl;//201
cout << a2.getC() << endl;//202
return 0;
}
如果static成员变量是私有变量那么将不能通过类名::变量名访问(int AA::m_c = 100;),只能通过静态方法来间接访问。静态成员的初始化不能在类中初始化,一定要在类外初始化。