動態綁定

   C++類的繼承機制的一個特點是多態性。所謂多態性是指子類和父類中具有相同函數名但不同操作的函數。那麼問題來了,同一個函數名在調用時該選擇那個函數體呢?其中一個方法是靜態綁定,即編譯時選擇函數體,也叫缺省的函數調用方式。

   動態綁定即在運行時選擇函數體,是橋接子類和父類之間同名函數的接口。側重於父類對象對子類同名函數調用的實現。動態綁定通過虛函數實現,使用規則有4點:

    1. 要有一個繼承層次
    2. 在基類中要定義虛函數
    3. 在派生類中要對基類中定義的虛函數進行重定義
    4. 要通過基類指針(或基類引用)來調用虛函數
 

case:

#include <iostream>
using namespace std ;

class a
{
 public:
    virtual void h(double) {
  cout << "aaaaaa!" << endl ;
 }
};

class b: public a
{
 public:
  void h(double) {
  cout << "bbbbbb!" << endl ;
 }
} ;

int main()
{
 class a *p , pp;
 class b obj ;
 p = &obj ;
 p->h(77.08);
 pp.h(77.08);
 return 0 ;
}


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章