我试图了解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-arms
和has-legs
)。关于c++ - 要求简单的C++合成与继承示例,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49890491/