C++中空指针也可以调用成员函数的,但是也要注意有没有用到this指针,如果有用到this指针,需要加以保证代码的健壮性
代码案例
出现报错
报错原因:因为新建的指针是空,所以this指代的对象为空,因此没有成员变量,所以报错
但是换直接用函数就正常
解决方案:
//空指针访问成员函数
class Person {
public:void ShowClassName() {cout << "我是Person类!" << endl;}void ShowPerson() {//加入判断语句,如果是空就直接返回if (this == NULL) {return;}cout << mAge << endl;}public:int mAge;
};void test01()
{Person * p = NULL;p->ShowClassName(); //空指针,可以调用成员函数p->ShowPerson(); //但是如果成员函数中用到了this指针,就不可以了
}int main() {test01();system("pause");return 0;
}
在其中使用if判断语句,先前判断this指针是否为空,如果是空,则直接返回,不进行下面的内容,可以避免执行下面的语句,出现报错