gpt4 book ai didi

c++ - 这是多重继承的好用法吗?

转载 作者:搜寻专家 更新时间:2023-10-30 23:54:00 26 4
gpt4 key购买 nike

我发现了一些代码,其中从基类派生用作一种标志,将某些对象标记为属于特定组:

// Base type for any item to be stored in a Storage.
class Item { // trivial class (as shown here)
public:
virtual ~Item() {}
};

class BaseItem; // complex class

class ItemA : public BaseItem, public Item; // complex class

class Storage;

因为已经有一个基类可以派生,所以我们得到了多重继承。

考虑到多重继承的性能成本以及此代码必须高效这一事实,这是继续进行的好方法吗?

一个简单的标志会是更好的选择吗?

最佳答案

主要问题是:ItemA 的行为与 BaseItemItem 的行为有何不同?” 事实上,您甚至可以问:“BaseItem 的行为与 Item 有何不同?”继承主要用于当您想要继承类型之间的共同行为,但它们之间的行为有一些差异时(参见"Why use inheritance at all?")。如果这些项目在行为上根本没有区别,则有更简洁的方法来表示每个项目的一些特殊“type”,而无需定义实际的... type对他们来说,例如用你已经提议的旗帜。如有疑问,keep it simple .

在性能方面...好吧,在这个阶段根本甚至不要考虑性能:是的,there will be a very small runtime impact of using virtual members ,但对于几乎所有目的而言,这都是无关紧要的。然而,通过多重继承,很容易很快搞出一团令人费解的困惑局面,没有人愿意尝试去理解。尽管如此,there are some good reasons for using MI, but be very, very careful with it .

关于c++ - 这是多重继承的好用法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37135953/

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