C++类的构造函数与析构函数
发布日期:2021-06-03 08:57:46
浏览次数:7
分类:技术文章
本文共 1383 字,大约阅读时间需要 4 分钟。
前言序锦:
很开深也很受教的一次C++学习,今天在图书馆自习,女票说要拿一道C++的题来考考我,说这道题颇有难度,当时的我是很激动的,毕竟作为程序猿来说,就相当于猎人嗅到了食物的味道一样O(∩_∩)O哈哈~,好了话不多说,直接来上题目吧……
正文:
题目:calss A{ A(){ p = this; } ~A(){ if( p != NULL ) { delete p; p = NULL; }} A* p; };老铁们,请先不要继续往下看,先来自己品尝一下这道题吧,看你能不能很快OJ她!!!
分析:看了这道题,我们可以朝着两个方向去寻找答案,“构造函数”和“析构函数” 1,构造函数方面: 由于A类中有一个指针A* p; 而构造函数 A(){ p = this; } 也就是说整个指针指向了对象本身,修改为:`A(){ p = NULL; },`在实际的程序中,可以将p指向别的对象,比如结构体中的next对象一样。2,析构函数方面:首先我们来看一下delete p,这一句的操作就是让我们来手动释放掉p对象,而我们又是将其定义在析构函数中,则会出现,对象本来已经通过析构函数被析构掉了,然后此处再次调用delete,此时又会再次去进行析构,而析构的都是同一个对象,这样就会形成无限递归调用析构函数,导致错误。
对就是这么“简单”的一道题,却隐含了这么多的知识,真的是让人感慨呀,当年学的C++感觉全都还给老师了呀,今天真的很感谢女票^-^给我这么个机会来好好脑补一下C++知识,下面我们还是来详细了解一下C++中的
this指针:我首先看的是构造函数,A(){ p = this;},
好奇特的构造函数,为什么什么都没有,第一句一开始就出现了一个变量p,还等于this,为了这一点,还专门去看一下this:
C++中的this: 1,对于上面的p = this,意思就是对于p的this就是p的this指针,如果有成员函数调用,比如说a.sum(),则sum函数可以通过隐形形参this来访问a,所以this是被调用对象访问调用他的对象的工具,可以理解为this指向调用他的对象; 2,默认情况下,this的类型是指向类类型非常量的常量指针,所以默认情况下,进行初始化时,我们不能把this绑定到一个常量对象上去。 3,this指针是类成员函数的第一个默认隐含参数,编译器自动维护传递,类编写者不能显示传递; 4,只有在类的非静态成员函数中才可以使用this指针,其他任何函数中都不可以。 3,this指针时刻指向对象,在成员函数的开始执行前构造,在成员的执行结束后清除。
课后习题1:
课后小练习,等你来解决哟^-^,有答案的盆友们可以将你们的答案留言,我们一起学习!写出类A的定义,通过类的静态成员来记录已经创建的A类的实例(对象)的个数,使得下面的程序int main(){ A *pA = new A[10]; cout<<"There are"<GetObjCount()<<"objects"<
比较简单但是很有代表性的一道题,欢迎各位伙伴们(^▽^)OJ,可以将你们的结果或者问题留下,我们一起学习……
小编也自己写了个比较简单的结果,大家感兴趣的也可以共同借鉴一下。
课后习题1答案:
转载地址:https://blog.csdn.net/HuaCode/article/details/80028074 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
不错!
[***.144.177.141]2024年04月02日 08时29分55秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
中文代码示例之NW.js桌面应用开发初体验
2021-06-29
为《 两周自制脚本语言 》添加中文测试代码
2021-06-29
将《 两周自制脚本语言 》测试中使用的接口中文化
2019-04-26
5分钟入门LingaScript-尝鲜中文版TypeScript
2019-04-26
重拾《 两周自制脚本语言 》- 支持中文标识符
2019-04-26
Java实现文本编辑时基于拼音输入的补全原型
2019-04-26
从立创EDA,Gratipay看中文编程开发环境和推广运营的一个趋势
2019-04-26
中文代码之Django官方入门:建立模型
2019-04-26
Python实现推流直播
2019-04-26
你不得不了解的卷积神经网络发展史
2019-04-26
你不得不了解的机器学习知识
2019-04-26
你不得不了解的深度学习知识(一)
2019-04-26
你不得不了解的深度学习知识(二)
2019-04-26
AI算法之Encoder-Decoder 和 Seq2Seq
2019-04-26
AI算法之Attention机制
2019-04-26
人体口罩佩戴检测实战
2019-04-26
[实战]200类鸟类细粒度图像分类
2019-04-26