我有两个类,其中一个继承另一个:
class baseClass
{
public:
virtual void show();
};
void baseClass::show(){cout << "Base class" << endl;}
class derivedClass
{
public:
void show();
};
void derivedClass::show(){cout << "Derived class" << endl;}
如果我创建了一个 derivedClass 对象并调用了 show 函数,它会正确打印“Derived class”。如果我执行以下操作:
derivedClass b;
baseClass* b;
b=&d;
b->show();
它再次正确打印出“派生类”。但是,如果我列出这样的列表:
list<baseClass> t;
list<baseClass>::iterator it;
baseClass b;
derivedClass d;
t.push_back(b);
t.push_back(d);
并尝试在每个项目上调用 show:
it = t.begin();
it->show();
it++;
it->show();
b 和 d 的输出都是“基类”。我的问题是:为什么它只使用 show() 的 baseClass 版本,我怎样才能使它正确地使用派生版本的列表中的 derivedClass 对象?
提前致谢