取消对类的成员函数的NULL指针
这个问题在这里已经有了答案:
解引用空指针会产生未定义的行为。
我可以猜测为什么这仍然适用于你(但它又是UB!),但如果你尝试访问func()
的成员变量,我很确定它会停止工作。
解引用NULL
指针意味着你有未定义的行为。
然而,在这种情况下,在大多数实施方式中,你将与正确的函数结束this
之中NULL
,正常执行主叫非虚拟方法的是设置隐藏参数this
为的指针的对象(在这种情况下, NULL
)和然后调用该函数。 如果您不访问成员变量或调用虚拟方法,则在大多数实现中应该没问题。
既然你不能访问成员或者调用虚拟函数,或者以任何其他方式做this
指针的任何有用的事情,那么你已经非常接近static
方法的场景,并且我会建议使用它,而不是使用this
指针。
对于你希望能够用this
指针做别的事情而不是检查NULL
的角落情况,你仍然可以使用static
方法,并明确地将指针传递给对象:
static void func(foo* diz) {
cout << "In func" << endl;
if( diz != NULL ) {
diz->actual_work_on_diz();
}
}
链接地址: http://www.djcxy.com/p/49709.html