程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 怎樣通過函數實現C++多態性

怎樣通過函數實現C++多態性

編輯:C++入門知識

C++多態性主要體現在虛函數的調用,在C++中,虛函數的調用使用的是動態綁定,也有人說是晚捆綁,也就是在程序運行時才決定調用的函數,即使程序員不知道對象類型,程序仍然可以作出適合該對象類型的行為。

簡單的說,虛函數就是在函數原型前加上virtual關鍵字。函數一旦被聲明為虛函數,即使類在改寫它的時候沒有將其聲明為虛函數,它從該點的繼承層次結構中仍然是虛函數。如果基類中一個函數被聲明為虛函數,在若干子類中有著不同的實現,那麼我們在創建若干子類的不同對象時,可以用基類的指針或者引用來指明子類對象並且調用相應子類的函數。

虛函數的定義方式如下:

◆類的靜態成員函數不可以定義為虛函數;
◆類的構造函數不可以定義為虛函數;
◆非類的函數不可以定義為虛函數。

純虛函數是在聲明虛函數時初始化為0的函數。

  1. #include<memory> 
  2. #include<iostream> 
  3. using namespace std;  
  4. Virtual void print() const = 0;

抽象類

簡單的說,帶有一個或多個未實現的純虛函數的類是抽象類。如果一個類繼承自一個抽象類,但它沒有全部實現父類裡面所有的純虛函數,那麼那些純虛函數在子類中仍然是純虛的,這個子類仍然是抽象類,仍然不能實例化對象。

抽象類是一種特殊的類,只能作為基類來使用,其純函數的實現由派生類給出。雖然不能實例化抽象類,但我們可以聲明一個抽象類的指針和引用,在實例化對象時,可以用不同的子類來實現,從而實現多態性操作。只有當派生類將基類中的所有的純虛函數都實現的時候,它才不再是抽象類。

C++多態性

從廣義上說,C++多態性是指一段程序能夠處理多種類型對象的能力。在C++語言中,多態性可以通過強制多態、重載多態、類型參數化多態、包含多態等多種實現形式。所謂多態就是通過類的繼承,使得同一個函數可以根據調用他的對象的類型作出不同的響應。它也繼承和重載共同構成面向對象的3大編程特性。

C++多態性通過虛函數來實現,當我們用基類的指針來調用虛函數時,程序會根據對象的屬性選擇其自身的函數實現。即使程序員不知道對象類型,程序仍然可以作出適合該對象類型的行為。

C++語言支持兩種類型的多態:一種是編譯時的多態靜態多態),另一種是運行時的多態動態多態)。在編譯時的多態是通過靜態聯編實現的,而在運行時的多態則是通過動態聯編實現的。

  1. C與C++中標准輸入實現方式上的一點區別
  2. C++編譯器如何對Const常量進行分配存儲空間
  3. C++類庫設計的基本構思與方法
  4. 玩轉C++語言的幾種方法
  5. 如何更好的進行C++代碼編制

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved