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

 我来答
死光光1220
2019-02-26
知道答主
回答量:1
采纳率:0%
帮助的人:1.3万
展开全部
如果声明一个对象指针时没有分配内存,那么不会调用构造函数

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

A *a=new B(15),此时B调用构造函数并分配内存,a只是指向了这块内存,没有分配
GTA小鸡
高粉答主

2019-02-26 · 醉心答题,欢迎关注
知道大有可为答主
回答量:2.6万
采纳率:78%
帮助的人:1.3亿
展开全部

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

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

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

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式