Fai*_*ler -2 c++ virtual inheritance
我有两个类,如下所示(我试图尽可能抽象示例):
#include <iostream>
using namespace std;
class foo1
{
public:
foo1() {};
virtual ~foo1() {};
void Method1() { Method2(); }
virtual void Method2() { cout<<"parent";}
};
class foo2 : public foo1
{
public:
virtual void Method2() { cout<<"child";}
};
int main()
{
foo2 a = foo2();
a.Method1();
}
Run Code Online (Sandbox Code Playgroud)
我收到了"父母"的消息.所以Method1()
的foo2
执行foo1::Method2()
.
我需要使用什么来foo2::Method1
调用它们foo2::Method2
?
不,你不,你得到"child"
.如果你这样做,你会得到父母
foo1 a = foo2(); // My crystal ball tells me this is what you really have
Run Code Online (Sandbox Code Playgroud)
这将是由于对象切片.要使它工作,你需要指针或引用:
foo2 f;
foo1& rf = f;
rf.Method1(); //child
Run Code Online (Sandbox Code Playgroud)
要么
foo1* a = new foo2();
a->Method1(); //child
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
107 次 |
最近记录: |