测试多态性和虚函数&shared_ptr,我试图理解下面的最小例子所描述的情况.
class B{
public:
// Definition of class B
virtual void someBMethod(){
// Make a burger
};
};
class C : public B {
public:
// Definition of class C
void someBMethod(){
// Make a pizza
};
};
class A{
public:
A(B& SomeB) : Member(std::make_shared<B>(SomeB)){};
std::shared_ptr<B> Member;
};
Run Code Online (Sandbox Code Playgroud)
现在,我们可以拥有主力
int main(){
C SomeC;
A SomeA(SomeC);
A.Member->someBMethod(); // someBMethod from B is being executed.
};
Run Code Online (Sandbox Code Playgroud)
除非我不包括从我的实际代码的小例子,有些错误,我觉得SomeC是越来越切下来的B,或者至少someBMethod从B正在calledin的最后一行.
问:应该用什么来初始化正确的方式Member以这样的方式,该方法someBMethod从C …