簡體   English   中英

抽象類之間的組成

[英]Composition between abstract classes

是否可以在兩個抽象類之間建立組成關系(而非聚合)?

我不這樣認為,因為我無法實例化一個抽象類。 但是也許有一種簡單的方法可以做到這一點。

是:

class A
{
    virtual ~A() = 0;
};


class B
{
    virtual ~B() = 0;
    A* mA;
};

您可以使用指向抽象類型的指針。

您可以使用指針或對其他類的引用。 例如:

class A {
public:
  virtual void m() = 0;
  virtual ~A() { }
};

class B {
public:
  virtual void m() = 0;
  virtual ~A() { }

private:
  boost::scoped_ptr<A> a;
};

在C ++ 11中,您可以改用std::unique_ptr 請注意,這使B不可復制-這對於使用子類型多態性的類來說有點常見。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM