相关疑难解决方法(0)

C++标准的哪一部分允许在括号中声明变量?

请考虑以下代码:

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

我很惊讶它创建了有效的变量s.谁能解释一下这里发生了什么?

c++

12
推荐指数
1
解决办法
1058
查看次数

构造对象的歧义

这是我写的一个例子:

struct Foo
{
  Foo() = default;
  Foo(int)
  {

  };
};

int main()
{
  int baz = 10;
  Foo(1); // OK
  Foo(baz); // Fails, redefinition 
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

为什么Foo(baz)尝试构造一个新对象baz,而不是构造一个将参数传递baz给构造函数的匿名对象?当我bar通过写入声明一个对象时Foo(bar),我得到一个默认的初始化对象就好了,但是一旦我尝试传递一个参数,它就会失败.模糊性是如何解决的?

c++

5
推荐指数
1
解决办法
103
查看次数

标签 统计

c++ ×2