c++ - 简单 C++ 组合与继承示例的请求

标签 c++ class oop inheritance composition

我试图理解 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/

相关文章:

c++ - 使用另一个指针删除动态数组

c++ - 专门化模板类构造函数

java - 具有泛型和 Comparable 的接口(interface)和类

c++ - 虚拟继承和静态继承——C++中的混合

javascript - 将数组组合成嵌套对象

c++ - 普通类型的类型特征

c++奇怪的std::cout行为使用指针

java存储实例变量并使用键值之一进行访问

java - 我应该使用什么返回语句才能使用针对非整数值引发异常的菜单?

c++ - 伪代码翻译