C++代码中A *a=new B(15);这句话为什么没有调用A的构造函数,而是仅调用了B的构造函数?

如题所述

如果声明一个对象指针时没有分配内存,那么不会调用构造函数

A *a=new A 这样才会调用A的构造函数,因为A声明指针时分配内存了

A *a=new B(15),此时B调用构造函数并分配内存,a只是指向了这块内存,没有分配
温馨提示:内容为网友见解,仅供参考
第1个回答  2019-02-26

A *a = new B(15); 新建一个B类对象,令一个名为a的A类指针指向它

    定义一个类的指针a并不会导致这个类的构造函数被调用

    而new B一定会调用A类的构造函数,因为B类一定是A类的子类,子类对象构造的顺序是先调用父类的构造函数再调用本类的构造函数。