一次面试中遇到下面这个问题,觉得很有意思,记录下来
------------------------------------------------------------------------------
以下的定义是正确的吗
class A
{
private:
const int var = 10;
}
------------------------------------------------------------------------------
首先上述定义是错误的。
1. 在类中可以定义const变量,但不能初始化。
2. const常量的初始化必须在类中的构造函数初始化列表中初始化,但不能在构造函数体内初始化。
即可以如下定义:
class A
{
private:
const int var;
public:
A(int v) : var(v)
{}
};
int main()
{
A a(100);
return 0;
}
上述定义中const变量属于一个具体的对象,那么问题来了,
怎样在整个类中都恒定不变? 可以用枚举(enum)
class A
{
private:
enum {var = 100};
int size = var;
};