C++类的静态成员变量

#include<iostream>

using namespace std;
class Rect {
public:
	Rect() {
		count++;
	}
	~Rect() {
		count--;
	}
	static int getCount() {  // 静态成员函数
		return count;
	}
private:
	int width;
	int length;
	static int count;  // 静态成员变量count来计数
};

//int Rect::count = 0; 取消注释才不会编译出错

int main()
{
	Rect rect1;
	cout << "The count of Rect: " << Rect::getCount() << endl;

	Rect rect2(rect1);  // 新的对象需要使用老的对象来进行初始化
	cout << "The count of Rect: " << Rect::getCount() << endl;
	return 0;
}

静态全局变量不能被其他文件所用,因而其他文件能够定义相同名字的变量,而不会发生冲突。程序在内存中的四个位置:代码区,全局数据区,堆区,栈区。在静态局部变量前加static关键字,就定义了静态局部变量。特点是:

  1. 该变量在全局数据区分配内存。
  2. 始终驻留在全局数据区,直到程序结束,但其作用域为全局作用域,当定义它的函数或者语句块结束的时候,作用域结束。
  3. 静态成员在使用之前必须初始化,否则链接会出错。

一般情况下,类的静态成员变量不能在类内进行初始化.

  1. 静态数据成员不属于任何一个对象,因此并不是在创建对象的时候被定义的,这就意味着,他们并不是由类的构造函数初始化的。
  2. 必须在类的外部定义和初始化每个静态成员,定义时使用类作用域运算符。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章