相关疑难解决方法(0)

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

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

const int answer = 42;

int main()
{
    X(answer);
}
Run Code Online (Sandbox Code Playgroud)

我本来希望这打印

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

但是,它打印X(),我不知道为什么X(answer);会调用默认构造函数.

奖励积分:我需要更改什么才能获得临时而非变量声明?

c++ syntax most-vexing-parse

80
推荐指数
3
解决办法
2455
查看次数

标签 统计

c++ ×1

most-vexing-parse ×1

syntax ×1