gpt4 book ai didi

c++ - 结构构造函数名称优先级

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:27:27 27 4
gpt4 key购买 nike

我在 C++11 中写了一个像这样的结构

struct StackOverflow
{
int x;
StackOverflow(){}
StackOverflow(int x) { x = x; }
};

我知道我应该将后一个构造函数编写为 StackOverflow(int x) : x(x) {} 但我很高兴在这种情况下我没有这样做,因为我学到了一些东西:

C++11 编译器没有用语句{x = x;} 做正确的事。事实上,结构成员 x 甚至没有被初始化(当我调试我的应用程序失败的原因时它有随机值)。而且我没有收到编译器警告。

这不应该奏效吗?

最佳答案

您应该使用您似乎已经知道的构造函数初始化列表。所以我认为您只是想知道为什么您的代码没有按照您打算的方式执行。好吧,问题是编译器不知道您的意图,因为它没有在程序中表达。您需要以编程方式表达您的意图:

StackOverflow(int x) { this->x = x; }

编译器需要知道哪个x是哪个x。使用 this->x,编译器知道您的意图。

关于c++ - 结构构造函数名称优先级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14084457/

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