博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++ this指针(3) - 删除this指针
阅读量:4071 次
发布时间:2019-05-25

本文共 831 字,大约阅读时间需要 2 分钟。

通常通常情况下,delete操作符不应该用于删除this指针。但是,一旦使用了delete this, 则需要考虑到下面的这些情况。

1) delete操作符只允许与使用new分配的对象配套使用

如果对象是用new创建的,则可以使用delete this, 否则会导致未知的行为。具体可参考本人之前的。

class A{  public:    void fun()    {        delete this;    }};int main(){  //下面的3行是正常的  A *ptr = new A;  ptr->fun();  ptr = NULL // 避免野指针  //下面的2行会导致异常  A a;  a.fun();  return 0;}

2) 一旦this指针被delete, 则这个对象的任何成员都不能再被访问

#include
class A{  int x;  public:    A() { x = 11;}    void fun()    {      delete this;      //下面这行可能会导致异常      std::cout<

在程序设计中,尽量不使用delete删除this指针,可以采用其它方式来释放资源。

3) 静态成员的访问不受this影响

因为静态成员不需要特定对象来访问,所以即使this指针被删除后,类中的静态成员任然可以正常访问。

见下面例子:

#include
class Test{public: void func() { delete this; } static int a;};int Test::a = 11;int main(){ Test *obj = new Test; obj->func(); std::cout<<"a = "<

编译正常,输出:

a = 11

 

转载地址:http://jqeji.baihongyu.com/

你可能感兴趣的文章
在北大学习这几天
查看>>
一个关于Http的请求头Expect
查看>>
最近用C#写Winform的一个心得
查看>>
PHP中日期相加减
查看>>
Ext中RowExpander数据刷新
查看>>
Ext中tabpanel对面板的添加
查看>>
Ext中的选择器
查看>>
自己设计的一个PHP的MVC framework
查看>>
ext中联动combo远程加载选中的解决
查看>>
ie下对于window.location.href的跳转时获取不到referer的,php中的路径包含有未定式的
查看>>
一段有用的jquery代码
查看>>
c#中队trunked的处理
查看>>
笔记本无线路由组件的局域网ping不通的问题
查看>>
php中require后的路径问题
查看>>
ext直接导出结果到excel
查看>>
combotree的总结
查看>>
最近小结
查看>>
大规模图像分类器的演化-Large-Scale Evolution of Image Classifiers-读后杂谈
查看>>
java对大文件的处理思路
查看>>
qt中的一个问题
查看>>