答案是D,能分析一下ABCD吗?

设A为已定义的类,下列对于类A的对象的声明中不正确的是( )。
A、
A a1 ;

B、
A a2(15) ;

C、
A *p=new A ;

D、
A a3( ) ;
答案是D,能分析一下ABCD吗?

直接说d吧,这个是一个可调用对象,但是你这个对象还没创建出来,调用不了它的重载(),abc都是最基础的构造,


    A a1;//调用默认构造函数A()
    A a2(15);//调用构造函数A(int)
    A* p = new A;//调用默认构造函数A()
    A a3();//相当于A a3(void);和函数的声明一样,编译器不知道你这个是函数声明还是变量定义