我想在委托(delegate)构造函数中使用const
类成员变量。检查以下代码:
#include <iostream>
using namespace std;
class T
{
const int c = 100;
public:
T(int i)
{
cout << i << endl;
}
T() : T(c)
{
}
};
int main()
{
T t;
return 0;
}
运行结果为:
0
我假设输出应该是 100
。所以根据我的理解,在委托(delegate)构造函数期间,T::c
没有被初始化。我将 c
修改为 static const
成员:
class T
{
static const int c = 100;
......
}
这次的结果是100
:
100
但检查后static member引用,我找不到 static const
成员在委托(delegate)构造函数期间保证初始化的证据。 const
成员在委托(delegate)构造函数中的正确用法是什么? static const
成员是否保证在委托(delegate)构造函数期间初始化?
最佳答案
当一个构造函数将构造工作委托(delegate)给另一个构造函数时,另一个构造函数负责初始化所有成员和基类。
因此在您的第一个构造函数数据成员 c
中尚未初始化。
回复
” I can’t find the evidence that static const member is guaranteed initialized during delegating constructor.
…不是:它是作为静态初始化的一部分进行初始化的,它发生在 main
中的第一个语句之前。
关于c++ - const 成员在委托(delegate)构造函数中的正确用法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49765389/