#define _CRT_SECURE_NO_WARNINGS
#include
using namespace std;// 这部分需要知道:空指针
// 1、可以访问什么样的成员函数
// 2、不能访问什么样的成员函数,为什么不能访问
class Person
{
public:
void showPersonAge() // 显示对象年龄函数
{
if (this == NULL) // 理解:为什么要加条件判断
{
return;
}
cout << "Person age = " << m_Age << endl;
}/* 说明: 类对象 调用 showPersonAge() 会使用 m_Age,本质是使用 this->m_Age 如果采用空指针访问,则需要访问 NILL->m_Age,而 NULL 中不含有任何内容,显然报错 注意:涉及空指针访问成员函数时候,需要加一个条件判断 小结:空指针是否能成功访问成员函数,要看他是否需要使用this指针,需要使用则不能成功 */
void showClassName() // 显示类名字函数
{
cout << "class name is Person" << endl; // 对象调用 showClassName() 不需要使用this指针
}
public:
int m_Age = 10;
};
void test01()
{
Person * p = NULL;
p->showClassName(); // 访问成功 因为没有用到 this 指针
p->showPersonAge(); // 访问失败 ,因为函数中用到this,而 this 是 NULL
}
判断权限报错空指针_C++知识点 28:空指针访问类成员函数
本文探讨了C++中空指针访问成员函数的问题。当空指针(NULL)尝试访问需要使用`this`指针的成员函数时,会导致访问失败,如`showPersonAge()`函数。然而,如果成员函数不依赖`this`指针,如`showClassName()`,则可以成功访问。在实际编程中,理解这一点对于避免空指针异常至关重要。
摘要由CSDN通过智能技术生成