C++创建类的实例?

Kol*_*nya 0 c++ constructor class instance default-parameters

可能重复:
带空括号的默认构造函数
实例化带或不带括号的类?

程序:

class Foo
{
   public:
      Foo ( int bar = 1 )
      {
         cout << "bar=" << bar;
      }
};

int main() {

   cout << "0 - ";
   Foo foo_0 ( 0 ) ;
   cout << '\n';

   cout << "1 - ";
   Foo foo_1 ();
   cout << '\n';

   cout << "2 - ";
   Foo foo_4;
   cout << '\n';

   return 0;

}
Run Code Online (Sandbox Code Playgroud)

输出:

0 - bar=0
1 - 
2 - bar=1
Run Code Online (Sandbox Code Playgroud)

问题:为什么示例#1不起作用,而示例#0和#2呢?

Luc*_*ore 7

Foo foo_1 ();
Run Code Online (Sandbox Code Playgroud)

是一个函数声明,没有创建对象.它是一个被调用的函数foo_1,它不带参数并返回一个Foo对象.

构造对象的正确方法是

Foo foo1;
Run Code Online (Sandbox Code Playgroud)

这个概念被称为C++的烦恼解析.简短的描述是任何可被视为声明的东西.