C++中空指针也是可以调用成员函数的,但是也要注意有没有用到this指针,如果用到this指针,需要加以判断保证代码的健壮性
#include<iostream>
using namespace std;
class Person{
public:
void showClassName(){
cout<<"我是Person类!"<<endl;
}
void ShowPerson(){
cout<<mAge<<endl;
}
//用到this指针
void ShowPerson1(){
if(this==NULL){
return;
}
cout<<mAge<<endl;
}
public:
int mAge;
};
void test01(){
Person *p=NULL;
p->showClassName();//空指针可以调用成员函数
p->ShowPerson();// 报错
p->ShowPerson1();//用到this指针,加以判断保证代码的健壮性
cout<<p->mAge<<endl; //调用成员变量,传入的指针p为空,此时访问空指针的mAge不存在该属性,报错。
}
int main(){
test01();
system("pause");
return 0;
}
引发了异常: 读取访问权限冲突。之所以会报这样的错误是因为p为一个空指针,这个对象并没有一个实体。当一个空值访问其中的属性,则会报错误。为了避免以上的错误,一般的会用一个if语句(this指针)来进行判断,去避免这一错误,保证代码的健壮性。
C++中空指针调用成员变量
由于传入的指针p为空,此时访问空指针的mAge不存在该属性,因此会报错。