类或者结构体用无参构造函数创建对象时不需要带括号, 否则会当成函数声明
#include
using namespace std;
class Test
{
public:
Test() { }
Test(int) { }
void fun() { }
};
int main(void)
{
Test a(10); // 语句1
a.fun(); // 语句2
Test b(); // 语句3, Test b()并不会生成Test类型的对象b,
// 而是声明一个返回值是Test的函数b, 这个函数的参数为空。
// 没有参数参数时不需要带括号,应该为 Test b。
b.fun(); // 语句4会出错, 如此以来,b.fun()就会被解释成通过函数b
// 调用另外一个函数fun(),这显然是不对的。
return 0;
}