我试图了解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关系,并且机器人不是特定种类的Arms,机器人不是特定种类的Legs(而是机器人has-armshas-legs)。

关于c++ - 要求简单的C++合成与继承示例,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49890491/

10-09 00:09