4
确定说,我们有以下类C++继承虚函数
class A
{
public:
virtual void taco()
{
cout << "Class A" << endl;
}
};
class B: public A
{
public:
virtual void taco()
{
cout << "Class B" << endl;
}
};
class C : public A
{
public:
void taco()
{
cout << "Class C" << endl;
}
};
现在,如果我这样做
A a = A();
B b = B();
C c = C();
a.taco(); //Class A
b.taco(); //Class B
c.taco(); //Class C
deque<A> aa = deque<A>();
aa.push_back(a);
aa.push_back(b);
aa.push_back(c);
for(int i=0;i<aa.size();i++)
aa[i].taco();//All Class A
A r = B();
r.taco(); //Class A
现在,当我初始化为B或C,你会发现,它赢得了” t从B或C发出函数。我想知道是否有任何解决方法?我理解这个概念,因为对象是A,它使用A的taco函数,但我只是想知道是否有一些技巧来获取其他函数。我的项目相当复杂,并且我无法知道将覆盖A的所有类(由于插件覆盖类)。另外,我还需要让基本虚拟函数有一个主体来添加默认行为。谢谢。
使用指针并动态创建对象。 C++中的多态性需要使用指针或引用。这应该包含在任何C++教科书中 - 您正在使用哪一种教科书? – 2011-05-26 13:29:38
为什么不把它作为答案。 – ColWhi 2011-05-26 13:32:07
Neil可能已经将它写为评论,但将其当作回答;-) – Pike65 2011-05-26 13:32:13