- 如果空指针调用成员函数,是否报错分两种情况:
- 如果使用到了 this 指针访问非静态变量,或者虚函数,程序会崩溃;
- 如果没有使用到 this 指针,程序不会崩溃。
-
原因:一般的成员函数并不与特定对象绑定,而是共用一份成员函数体,当程序编译后,成员函数的地址即已经确定,所以可以访问,反之,那些待分配地址的变量或函数则无法访问。
class A { public : int i = 1; void run() { //cout<<this->i; cout << "HelloWorld"; } }; int main() { A *a=nullptr; a->run(); return 0; }