关于类的成员常量,静态变量的相关推测

#include "stdafx.h"

class clsTest
{
public:
 const int icNum;
 static int isNum;
 int iNum;
 
 clsTest():icNum()
 {
 }
};

int clsTest::isNum ;
int _tmain(int argc, _TCHAR* argv[])
{
 clsTest clsB;
 return 0;
}

当类中存在成员常量时,在类内进行的成员常量的声明并没有同时进行成员常量的定义,则该类的构造函数必须重

写,因为成员常量需要在构造函数中定义(是定义不是初始化).

当类中存在静态变量时,在类内进行的静态变量的声明也并没有同时进行静态变量的定义,因此需要在类的外部对

该静态变量定义一次.

但,关于类中静态变量的定义,为什么需要做成这个样子,目前没有找到"官方"的说法.

自己猜测为:当声明一个类时,在程序内存(代码段么?)中只存在类的说明,而没有关于类中的任何数据(注意是数据)

的空间进行申请.这样一来类中的所有的静态变量,成员常量都要想办法为自己开辟空间.成员常量在改写构造函数

时申请空间.而静态成员不和任何对象相关,也就是不和构造函数相关,所以需要在类外,全局作用域内定义变量从而

开辟数据空间.

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值