从C ++中父类的对象调用子类的方法

时间:2015-07-22 05:31:00

标签: c++ inheritance methods polymorphism subclass

我有一个MyApp对象的动态列表,初始化如下:

Item

其中Item * items = new Item[size]; 是先前初始化的整数。

我使用size个对象填充此列表,其中 BookBook 的孩子。 ItemBook类都有方法Item,它向控制台输出一定数量的信息。我希望能够致电print,以便在items[x].print()中调用print方法,如下所示:

Book

基本上,我想调用子类void print() { Item::print(); //call to print method of parent class <printing out some information> } 的{​​{1}}方法,后者又调用print的{​​{1}}方法,该方法打印出更多一般信息。但是,使用Book仅调用print中的Item方法。如何调用items[x].print()类型的数组printItem类的print方法?

1 个答案:

答案 0 :(得分:3)

使用时

Item * items = new Item[size];

数组items的每个元素都是Item个对象。即使print()是虚函数,如果使用:{/ p>,也永远不会调用Book::print()

items[x].print();

为了能够调用Book::print(),您需要存储指针,而不是对象。

Item** items = new Item*[size];

然后,您可以使用:

items[x]->print();

只要用正确定义的指针填充数组。

示例:

Item** items = new Item*[5];
items[0] = new Book;
items[0]->print();