c++ 静态成员和方法

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;),只能通过静态方法来间接访问。静态成员的初始化不能在类中初始化,一定要在类外初始化。

静态成员方法只能访问类的静态成员,不能访问类的其他非静态成员。

上一篇:输入一行数字字符,请用数组元素作为计数器来统计每个数字字符出现的个数。


下一篇:List去重的几种方法