一、程序及输出
1.1 成员函数中没有用到this指针
#include<iostream>
using namespace std;
class Person
{
public:
void showClass()
{
cout << "class Name is Person" << endl;
}
int m_Age;
};
void test01()
{
Person * p = NULL;
p->showClass();
}
int main(){
test01();
system("pause");
return EXIT_SUCCESS;
}
输出:
1.2 成员函数中用到this指针
#include<iostream>
using namespace std;
class Person
{
public:
void showAge()
{
m_Age = 0;
cout << "age = " << this->m_Age << endl;
}
int m_Age;
};
void test01()
{
Person * p = NULL;
p->showAge();
}
int main(){
test01();
system("pause");
return EXIT_SUCCESS;
}
输出:会崩溃或者不正常退出
正确做法,添加非空判断
......
void showAge()
{
if (this == NULL)
{
return;
}
m_Age = 0;
cout << "age = " << this->m_Age << endl;
}
......
此时输出:
二、分析与总结
其实还是引出了空指针这个基础问题
如果成员函数中没有用到this指针,可以用空指针去调用成员函数
如果成员函数中用到了this指针,那么这个this需要加判断,防止程序崩溃