请教一个C++类的构造析构问题

slmax1 2015-08-20 11:31:30
我知道.创建子类对象的时候,先调用父类的构造函数,再调用子类的构造函数
然后,在销毁子类对象的时候,析构的顺序与创建时构造的顺序相反.



我想问的是.为什么...我应该如何去理解这一对构造 析构顺序.
...全文
92 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
slmax1 2015-08-21
  • 打赏
  • 举报
回复
感谢两位大神.说得太好了.
xade 2015-08-21
  • 打赏
  • 举报
回复
子类是在父类的基础上构造的,打个比方就是改装汽车,你先得买个车,然后才能在车上动手脚比如加上火箭炮什么的,车就是父类,改装好的车就是子类,被加上的火箭炮就是子类里的新成员。买车是父类构造函数做的事,加上火箭炮是子类构造函数做的事。 析构就是你要把你的改装车卖了,但是因为你的改装车没有申请牌照是黑车,直接卖就要被平平安安请去喝茶,所以你必须先把你捣鼓上去非法改装给弄回去,拆掉火箭炮,然后你就可以去卖车了。拆火箭炮就是销毁子类里申请的资源,是你的子类析构函数做的事,卖掉车就是销毁父类,是父类析构函数做的事。
dustpg 2015-08-21
  • 打赏
  • 举报
回复
1.先调用父类的构造函数,再调用子类的构造函数 这个很好理解, 假设是父类有虚函数, 那么在父类的构造函数里面会初始化虚表指针, 然后再调用子类的构造函数, 复写这个虚表指针, 正常. 假设相反, 那么最后一个复写虚表指针的是父类, 调用虚函数表就会出问题, 也是为什么 构造函数里面不要调用虚函数的问题, 2. 析构相反, 这个也很好理解, 简而言之就是对称 在实际项目中, 你会发现初始化和反初始化函数要对称, 不然会出问题. 这就不举例了

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧