社区
C++ 语言
帖子详情
请教一个C++类的构造析构问题
slmax1
2015-08-20 11:31:30
我知道.创建子类对象的时候,先调用父类的构造函数,再调用子类的构造函数
然后,在销毁子类对象的时候,析构的顺序与创建时构造的顺序相反.
我想问的是.为什么...我应该如何去理解这一对构造 析构顺序.
...全文
135
3
打赏
收藏
请教一个C++类的构造析构问题
我知道.创建子类对象的时候,先调用父类的构造函数,再调用子类的构造函数 然后,在销毁子类对象的时候,析构的顺序与创建时构造的顺序相反. 我想问的是.为什么...我应该如何去理解这一对构造 析构顺序.
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
slmax1
2015-08-21
打赏
举报
回复
感谢两位大神.说得太好了.
xade
2015-08-21
打赏
举报
回复
子类是在父类的基础上构造的,打个比方就是改装汽车,你先得买个车,然后才能在车上动手脚比如加上火箭炮什么的,车就是父类,改装好的车就是子类,被加上的火箭炮就是子类里的新成员。买车是父类构造函数做的事,加上火箭炮是子类构造函数做的事。 析构就是你要把你的改装车卖了,但是因为你的改装车没有申请牌照是黑车,直接卖就要被平平安安请去喝茶,所以你必须先把你捣鼓上去非法改装给弄回去,拆掉火箭炮,然后你就可以去卖车了。拆火箭炮就是销毁子类里申请的资源,是你的子类析构函数做的事,卖掉车就是销毁父类,是父类析构函数做的事。
dustpg
2015-08-21
打赏
举报
回复
1.先调用父类的构造函数,再调用子类的构造函数 这个很好理解, 假设是父类有虚函数, 那么在父类的构造函数里面会初始化虚表指针, 然后再调用子类的构造函数, 复写这个虚表指针, 正常. 假设相反, 那么最后一个复写虚表指针的是父类, 调用虚函数表就会出问题, 也是为什么 构造函数里面不要调用虚函数的问题, 2. 析构相反, 这个也很好理解, 简而言之就是对称 在实际项目中, 你会发现初始化和反初始化函数要对称, 不然会出问题. 这就不举例了
C++
类
对象作为
类
成员时,
构造
和
析构
的顺序
本文探讨了
C++
中
类
的对象成员如何在
构造
和
析构
过程中被初始化和清理。通过示例代码展示了当
一个
类
包含另
一个
类
的对象作为成员时,
构造
顺序是先调用对象成员的
构造
函数,然后是本
类
构造
函数,而
析构
顺序则相反。这个概念对于理解和避免内存管理
问题
至关重要。
任意鸡任意钱
问题
(
构造
与
析构
)
这是
一个
关于用
C++
编程解决‘百鸡百钱’
问题
的实例,通过定义
一个
类
CChickProblem来表示此
类
问题
,包含总钱数、鸡的总数、公鸡、母鸡和小鸡数量的数据成员,以及
构造
、
析构
、求解和打印解的函数。题目要求用动态数组保存所有可能的解,并给出多组测试数据进行输出。
C++
核心编程
类
对象作为
类
成员
在
C++
中,
类
的成员可以是另
一个
类
的对象,即对象成员。如B
类
中有对象A作为成员。博客围绕创建B对象时,A与B的
构造
和
析构
顺序
问题
展开探讨。
c++
将
一个
类
的共享指针推入vector中时,触发这个
类
的
析构
函数
文章讨论了
一个
关于
C++
中std::shared_ptr在使用时出现的意外
析构
问题
。
问题
源于使用std::make_shared创建对象时产生了临时对象,该临时对象在传给shared_ptr时导致了不必要的
析构
。由于
类
A内部含有普通指针属性,导致了浅拷贝
问题
,当临时对象
析构
时,影响了其他仍然引用该对象的shared_ptr。解决方案是避免这种
构造
方式或改用智能指针管理内部指针。
【
C++
】string
类
的模拟实现
文章详细介绍了如何在
C++
中实现
一个
自定义string
类
,包括带参和无参
构造
、拷贝
构造
、
析构
、重载操作符以及支持增删查改的功能。通过实例代码展示了如何处理字符串内存管理、深拷贝等
问题
。
C++ 语言
65,210
社区成员
250,514
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章