純虛函數 VS 虛函數

來源:互聯網
上載者:User

 

純虛函數定義

       純虛函數是一種特殊的虛函數,它的一般格式如下:

  class <類名>
  {
       virtual <類型><函數名>(<參數表>)=0;
       …
  };
  在許多情況下,在基類中不能對虛函數給出有意義的實現,而把它聲明為純虛函數,它的實現留給該基類的衍生類別去做。這就是純虛函數的作用。

  純虛函數可以讓類先具有一個操作名稱,而沒有操作內容,讓衍生類別在繼承時再去具體地給出定義。凡是含有純虛函數的類叫做抽象類別。這種類不能聲明對象,只是作為基類為衍生類別服務。除非在衍生類別中完全實現基類中所有的的純虛函數,否則,衍生類別也變成了抽象類別,不能執行個體化對象。

引入原因:

       1、為了方便使用多態特性,我們常常需要在基類中定義虛擬函數。

  2、在很多情況下,基類本身產生對象是不合情理的。  

       為瞭解決上述問題,引入了純虛函數的概念,將函數定義為純虛函數。

相關概念

      1、多態性
  指相同對象收到不同訊息或不同對象收到相同訊息時產生不同的實現動作。

       C++支援兩種多態性:編譯時間多態性,運行時多態性。
  a.編譯時間多態性:通過重載函數實現
  b 運行時多態性:通過虛函數實現。
  2、虛函數
  虛函數是在基類中被聲明為virtual,並在衍生類別中重新定義的成員函數,可實現成員函數的動態重載。
  3、抽象類別
  包含純虛函數的類稱為抽象類別。由於抽象類別包含了沒有定義的純虛函數,所以不能定義抽象類別的對象。

        所以,定義一個函數為虛函數,不代表該函數是一個未被實現的函數。定義它為虛函數是為了允許用基類的指標來調用子類的這個函數。
       定義一個函數為純虛函數,才代表函數未被實現。定義它是為了實現一個介面,起到一個規範的作用,使得繼承這個類的衍生類別必須實現這個函數。

參考:http://baike.baidu.com/view/502798.htm?func=retitle 百度百科

 

轉自:http://xingyunbaijunwei.blog.163.com/blog/static/76538067201182835157847/

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.