如何调用派生类的功能,不带类型转换?
基本类型:
class Fruit{
public:
virtual void show() {cout « "its a fruct" « endl;}
};
子:
class Banana : public Fruit{
public:
void show() { cout « "it's yellow banana" « endl; }
};
派生指针数组
class Basket
{
Fruit *fructs_;
//...
public:
void show();
//...
};
void Basket:: show(){
for(int i=0; i< index_; i++)
(fructs_+i)->show(); // need call Banana::show here
}
答案 0 :(得分:1)
由于基类和派生类的大小并发,因此不能多态使用C风格的数组。您应该使用std::vector
Fruit
smart pointers代替:
std::vector<std::shared_ptr<Fruit>> fruits;