分类: C/C++
2009-10-11 11:13:56
在一个类里,const又部分地恢复到它在C语言中的含义,当声明一个类的实例时,它是要占用内存空间的.但是在类的定义中,又不能将其初始化,必须在声明它的实例时初始化.
反过来讲,如果要是能在类的定义里初始化的话,那初始化为几呢?比如是10吧:
class myint{
const int c=10; // (1)
};
那么使用时:
myint mi=5;//这里想初始化为5,怎么办?是不是不可能了?所以(1)处初始化是不应该的,也是错误的.正确的方法应该是这样的:
class myint{
const int c;
public:
myint(int v):c(v){}//注意这里的初始化,必须在这个位置.
};
这样,在定义myint的变量时,就可以这样使用:
myint mi(5);//这时初始化成5是可以的了.
当然,要使用下面的语法,可能还需要重载一下=操作符才行吧:
myint mi=5;
当然,实在要初始化类里的常量,也是可以的,但是要在前面加个static,如下所示:
class myint{
static const int cs=10;//(2)
};
当这样定义时,cs将永远不占用内存空间.这时,cs与不是类里的const就是相同的了.