如果有一个类是 myClass , 关于下面代码正确描述的是?
来源:互联网 发布:plc简单编程实例 编辑:程序博客网 时间:2024/05/01 23:01
如果有一个类是 myClass , 关于下面代码正确描述的是:
myClass::~myClass(){
delete this;
this = NULL;
}
答案:无法编译通过
解析:
1.在类A的析构函数中,delete一个非A类对象通常是没有问题的;
在类A的析构函数中,delete一个类A的对象,就会造成死循环,堆栈溢出;
在析构函数外使用 delete后,应该立即给指针赋值 NULL防止野指针。
2.因为this是Myclass * const this指针,也就是说this指针指向的对象(不是指向的对象的值)不可以改变,所以给this赋值在编译期间就不会通过,
如果没有这语句的话是栈溢出,因为会不停的调用析构函数。
3.this被顶层const修饰不能修改。 删掉this=null后,在类的析构函数中调用delete this,delete this会去调用本对象的析构函数,而析构函数中又调用delete this,形成无限递归,造成堆栈溢出,系统崩溃。
myClass::~myClass(){
delete this;
this = NULL;
}
答案:无法编译通过
解析:
1.在类A的析构函数中,delete一个非A类对象通常是没有问题的;
在类A的析构函数中,delete一个类A的对象,就会造成死循环,堆栈溢出;
在析构函数外使用 delete后,应该立即给指针赋值 NULL防止野指针。
2.因为this是Myclass * const this指针,也就是说this指针指向的对象(不是指向的对象的值)不可以改变,所以给this赋值在编译期间就不会通过,
如果没有这语句的话是栈溢出,因为会不停的调用析构函数。
3.this被顶层const修饰不能修改。 删掉this=null后,在类的析构函数中调用delete this,delete this会去调用本对象的析构函数,而析构函数中又调用delete this,形成无限递归,造成堆栈溢出,系统崩溃。
阅读全文
0 0
- 如果有一个类是 myClass , 关于下面代码正确描述的是?
- 操作系统中关于竞争和死锁的关系下面描述正确的是
- 下面关于ICMP协议的描述中,正确的是()----腾讯2016研发工程师笔试题
- 下面关于ICMP协议的描述中,正确的是()----腾讯2016研发工程师笔试题
- 关于多线程和多进程编程,下面描述正确的是():----腾讯2016研发工程师笔试题(一)
- 关于group by子句的作用描述正确的是?
- 关于域名和IP描述正确的是?
- 下面对 C++ 静态数据成员的描述中,正确的是?
- 下面哪个描述是正确的_JAVA面试题及答案
- 下面是一个POST过程的核心代码
- 下面是一个关于VB的农历算法office:office
- 牛客 题库 下面有关static类变量和实例变量的描述,正确的有?
- 关于EL自定义函数和如果其中参数是一个自定义的类的问题
- 以下关于linux操作系统中硬链接和软链接的描述,正确的是?
- 以下关于java封装的描述中,正确的是:(牛客网)
- 牛客 题库 若MyClass是一个类名,其有如下语句序列:
- 对象使用时,下面描述错误的是
- java 下面是音频输出的代码:
- 文件加密CryptEncrypt和导出密钥CryptExportKey学习笔记
- ORA-00844: Parameter not taking MEMORY_TARGET into account
- 题目45:圆圈中最后剩下的数字(约瑟夫环)
- live555搭建简易流媒体服务
- Spring boot 方法参数验证
- 如果有一个类是 myClass , 关于下面代码正确描述的是?
- PAT-1079 Total Sales of Supply Chain (树的遍历)
- world front
- [自用门户]点击菜单变颜色
- Chrome提示:"请停用以开发者模式运行的扩展程序"的解决办法
- 重写dispatchTouchEvent方法,实现EditText失去焦点后(点击其他地方)收起键盘的效果
- CODE[VS] 1011 数的计算
- std::map的[]方法重写
- android 随记