首先看一段代码:
#include<iostream>
using namespace std;
struct Foo
{
Foo() {}
Foo(int) {}
void fun(){}
};
int main()
{
Foo a(10);
a.fun();
Foo b();
b.fun();
return 0;
}
运行以后会报错:
error: request for member ‘fun’ in ‘b’, which is of non-class type ‘Foo()’
原因:Foo b()只是一个函数的申明,返回值为Foo类型,而不是调用无参构造函数,正确声明一个无参构造函数的方法是Foo b。