类或者结构体用无参构造函数创建对象时不需要带括号, 否则会当成函数声明


#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;  
}