可能是重复问题:
当我在空对象指针上调用成员函数时会发生什么?
当我在空对象指针上调用成员函数时会发生什么?
class A {
public:
void foo() { cout << "Work";}
void bar() { this->foo(); }//new edit, works too!
};
class B {
private:
A *a; //never initialized
public:
A& getA() {
return *a;
}
};
void SomeFunction() {
B *b = new B();
B& bRef = *b;
bRef.getA().bar();//edited
delete b;
}
我调用了SomeFunction(),但没有初始化变量"a",但它仍然可以正确打印出"Work"。我不明白为什么,应该会因为段错误而终止!