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. 必须在类的外部定义和初始化每个静态成员,定义时使用类作用域运算符。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值