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;
}
Run Code Online (Sandbox Code Playgroud)
我调用SomeFunction()而没有初始化"a",它仍然正确打印"工作".我不明白为什么,它应该有分段故障拯救!
记住类只是C++的一个构造.编译时,所有类方法都只是接受隐藏this参数的静态方法.
鉴于您的foo()方法从不引用任何数据成员,它永远不需要使用它,因此尽管没有初始值,但运行正常.