当一个常量取另一个常量值时,C++ 常量初始化
C++ constants initialization when one constant takes other constant value
我无法在 class 中初始化常量,其中一个常量取决于另一个常量值。
class foo {
private:
const int secondConst;
const int firstConst;
public:
foo(int x) :
firstConst(x),
secondConst(firstConst*3)
{
// constructor code here....
}
}
secondConst 是一个垃圾值,
我怎样才能正确初始化它?
也许在 C++ 中,一个常量在初始化期间不能依赖另一个常量?
我编辑了我的 post。问题确实是在原始代码中,我在声明它们的地方切换了 const 字段。
你的示例适合我。但是,如果我将顺序更改为
private:
const int secondConst;
const int firstConst;
然后 secondConst
得到垃圾。原因是数据成员是按照它们被声明的顺序初始化的,而不是按照它们在成员初始化列表中出现的顺序。
来自标准:
Then, non-static data members are initialized in the order they were declared in the class definition
(again regardless of the order of the mem-initializers).
我无法在 class 中初始化常量,其中一个常量取决于另一个常量值。
class foo {
private:
const int secondConst;
const int firstConst;
public:
foo(int x) :
firstConst(x),
secondConst(firstConst*3)
{
// constructor code here....
}
}
secondConst 是一个垃圾值, 我怎样才能正确初始化它? 也许在 C++ 中,一个常量在初始化期间不能依赖另一个常量?
我编辑了我的 post。问题确实是在原始代码中,我在声明它们的地方切换了 const 字段。
你的示例适合我。但是,如果我将顺序更改为
private:
const int secondConst;
const int firstConst;
然后 secondConst
得到垃圾。原因是数据成员是按照它们被声明的顺序初始化的,而不是按照它们在成员初始化列表中出现的顺序。
来自标准:
Then, non-static data members are initialized in the order they were declared in the class definition (again regardless of the order of the mem-initializers).