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);
可以解释为从int
到X的强制转换
,或- 什么都没有,因为
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/