#include <iostream>
using namespace std;
class Fun {
private:
int age;
public:
void show() {
cout << "只是访问了一个成员函数" << endl;
}
void showAge() {
cout << "访问成员属性age:" << age << endl;
}
};
int main() {
Fun *p = NULL;
p->show();
p->showAge();
return 0;
}
注释主函数中p->showAge() 只运行p->show();
注释主函数中p->show(); 只运行p->showAge()
此时程序运行已经出错。
空指针访问成员函数分析
由于成员函数不属于任何对象,因此便会存在空指针访问成员函数的情况的出现。因为上述例子中指针p指向为空,而age属性是某个对象的属性,需要具体实例,当我们那空指针去访问属性时,由于指针为空,确实少实例便无法访问。show()函数的定义并未涉及到任何属性,因此我们拿一个去访问它时也是可以的。
避免空指针访问成员函数出错的方法
为了避免乱使用指针调用成员函数时出现空指针访问的情况,一班会在成员函数中添加以下代码防止程序崩掉。
void showAge() {
if(NULL == this) return; //避免空指针访问
cout << "访问成员属性age:" << age << endl;
}
当我们添加了上面的if语句后便可以避免空指针的方面,避免程序出错,提高了程序的健壮性。