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指针是否为空,如果是空,则直接返回,不进行下面的内容,可以避免执行下面的语句,出现报错