静态数据成员

【静态存储:
关键字extern和static说明静态存储变量和函数标识符。全局说明的标识符默认为extern。
如果这两个关键字用于说明变量,程序在开始执行时就分配和初始化空间;如果用于说明函数,表示从程序执行开始就存在这个函数名。
尽管标识符被说明为静态时,程序一开始执行就存在,但不等于它们在整个程序中可用。用static说明的局部变量只能在定义该变量的函数体重使用。与自动变量不同的是,static在第一次使用时进行初始化(默认初始化值为0)。函数退出时系统保持其储存空间和数值。下次调用这个函数,static 变量还是上次退出函数时的值。】
#include
using namespace std;
class Counter
{
static int num;
public:
void setnum(int i)
{
num = i;
}
void shownum()
{
cout << num << ‘\t’;
}
};
int Counter::num = 0;//如果不在类外初始化静态数据成员,就会发生“LNK1120 1 个无法解析的外部命令”的错误。
int main()
{
Counter a;
a.shownum();
a.setnum(10);
a.shownum();
system(“pause”);
}

静态数据成员
静态数据成员要求在类中声明,在类外定义。尽管static数据成员从存储性质上是全局变量,但其作用域是类。static数据成员在类外可以用“类名::”作为限定词,或通过对象访问。
在类中,声明时,不会建立储存空间。在说明对象时建立内存,且储存空间的建立不依赖于对象(所有对象共享同一个静态数据成员,值取决于最后一个改变后的值。)
在类声明之外要有一个static数据成员的说明语句,让它在编译建立内存时建立内存并进行一次文件范围初始化。若不指定初始值,则系统自动初始化为0.

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值