1. 程式人生 > >規定不能建立抽象基類的物件的原因

規定不能建立抽象基類的物件的原因

一、純虛擬函式定義
 純虛擬函式是一種特殊的虛擬函式,它的一般格式如下:
  class <類名>
  {
  virtual <型別><函式名>(<引數表>)=0;
  …
  };
  在許多情況下,在基類中不能對虛擬函式給出有意義的實現,而把它宣告為純虛擬函式,它的實現留給該基類的派生類去做。這就是純虛擬函式的作用。
  純虛擬函式可以讓類先具有一個操作名稱,而沒有操作內容,讓派生類在繼承時再去具體地給出定義。凡是含有純虛擬函式的類叫做抽象類。這種類不能宣告物件,只是作為基類為派生類服務。除非在派生類中完全實現基類中所有的的純虛擬函式,否則,派生類也變成了抽象類,不能例項化物件。
 
二、純虛擬函式引入原因
    1、為了方便使用多型特性,我們常常需要在基類中定義虛擬函式。
    2、在很多情況下,基類本身生成物件是不合情理的。例如,動物作為一個基類可以派生出老虎、孔 雀等子類,但動物本身生成物件明顯不合常理。
  為了解決上述問題,引入了純虛擬函式的概念,將函式定義為純虛擬函式(方法:virtual ReturnType Function()= 0;)。若要使派生類為非抽象類,則編譯器要求在派生類中,必須對純虛擬函式予以過載以實現多型性。同時含有純虛擬函式的類稱為抽象類,它不能生成物件。這樣就很好地解決了上述兩個問題。