gpt4 book ai didi

c++ - const 成员在委托(delegate)构造函数中的正确用法是什么?

转载 作者:太空狗 更新时间:2023-10-29 22:55:57 25 4
gpt4 key购买 nike

我想在委托(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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com