gpt4 book ai didi

c++ - 部分覆盖虚函数

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

我有一个抽象类 BakedGoodCupCakeBread 都派生自该抽象类。在我的作业中,我需要在我的 BakedGood 类中包含一个虚函数 ToString,它返回 BakedGood 的描述——下面是两个可能描述的示例:

"Chocolate cupcake with vanilla frosting and blue sprinkles ($1.95)"
"Wheat bread ($4.50)"

字符串的价格部分在类之间共享,因此该部分必须在父类 BakedGoods 中完成,但其余部分对于烘焙食品的类型是单独的,因此必须在子类中编写。我知道如何完全覆盖该功能,但不知道如何部分覆盖它。我如何对此进行编码,以便将字符串的共享部分写入 BakedGood 的 ToString 函数,其余部分写入 CupCake 和 Bread 的 ToString 函数?

最佳答案

创建一个纯虚拟成员函数,比如 description(),它将生成字符串的初始部分,并从您的 ToString() 覆盖中调用它抽象类:

class BakedGood {
protected:
virtual string description() const = 0;
public:
double price() const ...
string ToString() const {
ostringstream oss;
oss << description() << " ($";
oss.precision(2);
oss << price() << ")";
return oss.str();
}
};

class CupCake : public BakedGood {
protected:
string description() const override {
return "Chocolate cupcake with vanilla frosting and blue sprinkles";
}
};

class Bread : public BakedGood {
protected:
string description() const override {
return "Wheat bread";
}
};

注意:此实现使用 Template Method Design Pattern ,一种允许您将实现保留在抽象基类中,同时将部分工作委托(delegate)给其派生类的方法。

关于c++ - 部分覆盖虚函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49883251/

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