#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;
}
当类中存在成员常量时,在类内进行的成员常量的声明并没有同时进行成员常量的定义,则该类的构造函数必须重
写,因为成员常量需要在构造函数中定义(是定义不是初始化).
当类中存在静态变量时,在类内进行的静态变量的声明也并没有同时进行静态变量的定义,因此需要在类的外部对
该静态变量定义一次.
但,关于类中静态变量的定义,为什么需要做成这个样子,目前没有找到"官方"的说法.
自己猜测为:当声明一个类时,在程序内存(代码段么?)中只存在类的说明,而没有关于类中的任何数据(注意是数据)
的空间进行申请.这样一来类中的所有的静态变量,成员常量都要想办法为自己开辟空间.成员常量在改写构造函数
时申请空间.而静态成员不和任何对象相关,也就是不和构造函数相关,所以需要在类外,全局作用域内定义变量从而
开辟数据空间.