小编Red*_*ark的帖子

C++中组合关系的继承

我经常面对这个问题.假设我有这些课程:

class B
{
  public:
    virtual std::string className(){return "B";}
};

class A
{
  public:
    A()
    : _B(new B)
    {}

    virtual std::string className(){return "A";}

    virtual void desc()
    {
      std::cout << "I am " << className() << 
        " and I own: " << _B->className() << std::endl;
    }

  protected:
    B * _B;
};
Run Code Online (Sandbox Code Playgroud)

然后,我想扩展AB提供新信息.我敢肯定,SuperASuperB有一个"是"的有关系A,并B分别.直接的方法是尝试继承:

class SuperB: public B
{
  public:
    virtual std::string className(){return "SuperB";}
}

class SuperA: public A
{
  public: …
Run Code Online (Sandbox Code Playgroud)

c++ inheritance composition

2
推荐指数
1
解决办法
93
查看次数

标签 统计

c++ ×1

composition ×1

inheritance ×1