为了账号安全,请及时绑定邮箱和手机立即绑定

实例化构造函数问题

Soldier soldier; Person p = soldier 为什么只调用一次person构造函数,

而Soldier = soldier; Person p; p = soldier 调用了2次Person构造函数? 


正在回答

1 回答

  1. 首先确定如下事实:创建派生类对象时,程序首先调用基类构造函数,然后再调用派生类构造函数。(因此,Soldier soldier; 会先调用Person构造函数,后调用Soldier构造函数)

  2. Person p = soldier; 使用的是拷贝初始化,调用拷贝构造函数(不是构造函数),当前情况使用的是默认拷贝构造函数

  3. Person p; 属于默认初始化,调用的是Person构造函数。

  4. 无论Person p = soldier; 还是 Person p; 生成的对象p,销毁时都是调用的~Person析构函数。

第2、3点能解释你的问题了,第1、2、3、4能解释整个打印结果。望采纳。

2 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C++远征之继承篇
  • 参与学习       75219    人
  • 解答问题       249    个

继承,C++面向对象三大特征之一,通过编码实践方式讲解到操作层面

进入课程

实例化构造函数问题

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信