我试图理解 C++ 中组合和继承之间的语法差异。
我希望有人能提供两个简单的例子。使用组合的类的一个示例和使用继承的类的一个示例。
最佳答案
当然可以,为什么不呢?因为我喜欢机器人,所以我们就制作一个可以走动和抓取东西的机器人。我们将使用继承来制作一个机器人,并使用组合来制作另一个机器人:
class Legs {
public:
void WalkAround() {... code for walking around goes here...}
};
class Arms {
public:
void GrabThings() {... code for grabbing things goes here...}
};
class InheritanceRobot : public Legs, public Arms {
public:
// WalkAround() and GrabThings() methods are implicitly
// defined for this class since it inherited those
// methods from its two superclasses
};
class CompositionRobot {
public:
void WalkAround() {legs.WalkAround();}
void GrabThings() {arms.GrabThings();}
private:
Legs legs;
Arms arms;
};
请注意,至少对于此示例,CompositionRobot
通常被认为是更好的方法,因为继承意味着 is-a
关系,而机器人则不是。不是一种特定类型的 ARM
,而机器人不是一种特定类型的腿
(而是机器人有 ARM
并且有-腿
)。
关于c++ - 简单 C++ 组合与继承示例的请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49890491/