介绍之前建议先了解一下类内成员及其成员函数的存储方式:类的存储方式
类的成员函数是保存在代码区的,和普通函数不同之处在于,非静态类成员函数有一个隐藏的this指针,在调用函数时,无需我们显式传递函数指针,编译器会自动帮我们填充。
class Animal {
public:
void breathe() { // 实际上是这样: void breathe(Animal* this)
cout << "animal breathe" << endl;
}
};
int main() {
Animal* animal = nullptr;
animal->breathe();
return 0;
}

类的成员函数存储在代码区,具有隐藏的this指针,调用时编译器自动填充。即使对nullptr调用成员函数,只要不使用this指针,不会立即报错,但使用时会导致空指针异常。
最低0.47元/天 解锁文章
923

被折叠的 条评论
为什么被折叠?



