gpt4 book ai didi

c++ - 在C++中将子类插入到父类(super class)数组中

转载 作者:太空狗 更新时间:2023-10-29 21:29:25 24 4
gpt4 key购买 nike

这是我只知道我做错的事情之一。我的任务很简单。

在 C++ 中创建 3 个类,

产品,软件,书籍。产品是 super 的,书和软件是产品。然后做一个指针数组,用软件和书籍填充数组。

所以我做了以下事情

int main()
{
Product *productList[10];


Book *pBook;
Book q(5);
pBook = &q;
pBook->getPrice();

Software *pSoftware;
Software g(5);
pSoftware = &g;
pSoftware ->getPrice();


productList[0] = pSoftware; // fill it with software, cannot do this.

有没有办法将子类插入到父类(super class)数组中。或者我应该将指针数组定义为其他东西。

下面的类定义

class Product
{
public:

double price;

double getPrice();

Product::Product(double price){};
};


class Book: public Product
{
public:
Book::Book(double price)
:Product(price)
{
}
double getPrice();
};

class Software: public Product
{
public:
Software::Software(double price)
:Product(price) // equivalent of super in java?
{
} // code of constructor goes here.
double getPrice();
};

最佳答案

你应该使用公共(public)继承:

class Book : public Product {
...
};

[编辑]

如果您想在子类中以不同的方式实现它,您还应该将 getPrice() 声明为虚拟的。当您为指向 Product 的指针调用 getPrice() 时,这将使编译器调用正确子类的 getPrice():

virtual double getPrice();

关于c++ - 在C++中将子类插入到父类(super class)数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4924053/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com