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呢?
Foo foo_1 ();
Run Code Online (Sandbox Code Playgroud)
是一个函数声明,没有创建对象.它是一个被调用的函数foo_1
,它不带参数并返回一个Foo
对象.
构造对象的正确方法是
Foo foo1;
Run Code Online (Sandbox Code Playgroud)
这个概念被称为C++的烦恼解析.简短的描述是任何可被视为声明的东西.