C ++中object和object()的区别是什么

时间:2013-02-09 07:45:31

标签: c++ constructor instantiation most-vexing-parse

class A {
  public:
    A() { cout << "Constructor\n"; }  // (1) default constructor
};

A obj;                                // (2) instantiating obj

A obj();                              // (3) 

实例化objobj()之间有什么区别? obj调用上面提到的默认构造函数(1)。哪个构造函数将obj()调用?

2 个答案:

答案 0 :(得分:1)

A obj();声明一个名为obj的函数,该函数不带参数,返回A。它根本没有声明A对象。

由于A obj();未声明A个对象,因此不会导致任何构造函数调用。

答案 1 :(得分:0)

第二个被声明为一个函数。对象的名称是obj。它不需要任何参数。它返回A类型的对象。