首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

if(this!=NULL)可以吗解决办法

2012-05-16 
if(this!NULL)可以吗在catch 中使用这句话,以便在该对象不是被删除的情况下,给某些标记赋值,如果是该对象

if(this!=NULL)可以吗
在catch 中使用这句话,以便在该对象不是被删除的情况下,给某些标记赋值,如果是该对象已经被删除,就不需要了;那么这句话可以用吗

[解决办法]
这句话没有用.

对象不会被删除,只会被析构.

被析构后,就不可以再访问.

this != NULL 在合法的程序下是永远都成立的,所以这个判断是没有意义的.

class A;
A * p = new A;//这句话的意思是....

p = 0;//不会改变p 原来指向的对象.

太多东西了,,,楼主看 C++ PRIMER 之类的吧.
[解决办法]
想想看,谁拥有this
在某个成员函数里,判断this是否为NULL。如果this为NULL,那么怎么进入函数的?
[解决办法]

探讨

引用:

这句话没有用.

对象不会被删除,只会被析构.

被析构后,就不可以再访问.

this != NULL 在合法的程序下是永远都成立的,所以这个判断是没有意义的.

class A;
A * p = new A;//这句话的意思是....

p = 0;//不会改变p 原来指向的对象.

太多东西了,,,楼主看 C++ PRIMER 之类……

[解决办法]
多线程操作同一个对象 需要的是加锁 不是判断对象是否为NULL。

[解决办法]
多线程中操作同一个对象应该是使用互斥技术吧,比如mutex
[解决办法]
这是废话,当程序和执行环境没有问题(发生未定义行为)时永远成立。
[解决办法]
探讨

在类外不行,在类内没有必要

[解决办法]
#include <stdio.h>

class X
{
public:
void IsThisNull()
{
if (NULL == this)
{
printf("NULL == this\n");
}
}
};

int main()
{
reinterpret_cast<X *>(NULL)->IsThisNull();
return 0;
}

热点排行