private繼承與複合

來源:互聯網
上載者:User

private繼承與複合

文章出自:blog.csdn.net/windows_nt

private繼承定義:private繼承而來的所有成員,在derived中都會變成private屬性。
應用場合:當一個意欲成為derived class 者想訪問一個意欲成為base class 者的protected成分,
或為了重新定義一或多個virtual 函數時可以用private繼承。
知識點:
private繼承意味只有實現部分被繼承,介面部分應略去。
如果classes之間的繼承關係是private,編譯器不會自動將一個derived class對象轉換為一個base class對象,
這樣的轉換會導致錯誤。請記住,private繼承純粹只是一種實現技術。

盡量用複合代替private繼承。因為複合可避免virtual函數重定義。
案例:
class Widget : public Timer
{
private:
 virtual void onTick() const; //查看Widget的資料等等。
};

//複合實現
class Widget
{
private:
 class WidgetTimer : : public Timer
 {
 public:
  virtual void onTick() const; //查看Widget的資料等等。
 };
 WidgetTimer timer;
};

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.