public:
void operation();
protected:};
其实针对上面一个类,相信在很多时候我们需要其对象的一个指,例如下面一句代码
Object * pObj = GetOneObject();
pObj->operation();
相信对于上面一段代码,很多人都会修复其中的一个小bug,然后代码如下:
Object * pObj = GetOneObject();
if (pObj!=NULL)
{
pObj->operation();
}
然而牛逼程序员往往更愿意写成下面一段代码:
Object * pObj = GetOneObject();
if (NULL!=pOb)
{
pObj->operation();
}
具体原因我也就不解释了,反正其根本目的就是更好的判断一个指向对象的指针是不是为空。很多时候我很愿意将判断指针是不是为空的语句写成一个宏定义,然后再头文件中包含一下就行了,不过现在给出另一个比较“另类”的做法。
class NULLObject
{
public:
BOOL IsNull(){
if (this==NULL)
{
return TRUE;
}
return FALSE;
}
};
int _tmain(int argc, _TCHAR* argv[])
{
NULLObject * pNull =NULL;
if (pNull->IsNull())
{
printf("此对象是空\n");
}
else
{
printf("此对象不是空\n");
}
return 0;
}
怎么样此方法不错吧,如果想让一个类也能判断自身是不是为空对象,只需简单的继承这个类就行了。如下代码:
class NULLObject
{
public:
BOOL IsNull(){
if (this==NULL)
{
return TRUE;
}
return FALSE;
}
protected:
private:
};
class NULLObjectChild:public NULLObject
{
private:
int a;
};
int _tmain(int argc, _TCHAR* argv[])
{
NULLObject * pNull =NULL;
if (pNull->IsNull())
{
printf("此对象是空\n");
}
else
{
printf("此对象不是空\n");
}
NULLObjectChild * pChild =NULL;
if (pChild->IsNull())
{
printf("此对象是空\n");
}
else
{
printf("此对象不是空\n");
}
return 0;
}
怎么样这样的做法是不是比较另类的呢,但其本质目的还是在于判断指针为空的问题,只不过将其写成一个简单的类
供自己以后继承,做到复用。