gpt4 book ai didi

c++ - 为什么这会调用默认构造函数?

转载 作者:IT老高 更新时间:2023-10-28 12:02:38 25 4
gpt4 key购买 nike

struct X
{
X() { std::cout << "X()\n"; }
X(int) { std::cout << "X(int)\n"; }
};

const int answer = 42;

int main()
{
X(answer);
}

我本来希望这也能打印出来

  • X(int),因为 X(answer); 可以解释为从 intX ,或
  • 什么都没有,因为 X(answer); 可以解释为变量的声明。

但是,it prints X() ,我不知道为什么 X(answer); 会调用默认构造函数。

奖励积分:我需要更改哪些内容才能获得临时声明而不是变量声明?

最佳答案

nothing at all, because X(answer); could be interpreted as the declaration of a variable.

你的答案隐藏在这里。如果你声明一个变量,你会调用它的默认 ctor(如果不是 POD 和所有这些东西)。

在您的编辑中:要获得一个临时的,您有几个选择:

关于c++ - 为什么这会调用默认构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11691021/

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