先看一下什么是C++聯編?
我覺得通俗的講,用對象來訪問類的成員函數就是靜態聯編。
那什么是動態聯編:
一般是通過虛函數實現動態聯編。
看一個動態聯編的例子:
我比較懶,所以直接粘貼了MOOC視頻的圖片。
看一個動態聯編的例子:
1 #include <iostream> 2 #include <string> 3 using namespace std; 4 5 class Base 6 { 7 public: 8 virtual void print() //虛函數 9 { 10 cout<<"Base..."<<endl; 11 } 12 }; 13 14 class Derive : public Base 15 { 16 public: 17 void print() //雖然沒有標注virtual,但是因為和基類中的虛函數函數同名,所以默認虛函數 18 { 19 cout<<"Derive..."<<endl; 20 } 21 }; 22 23 void display(Base* p) //復制兼容原則,基類類型的指針也可以指向派生類。 24 { 25 p->print(); 26 } 27 28 int main() 29 { 30 Base a; 31 Derive b; 32 display(&a); //調用基類的print函數 33 display(&b); //調用派生類的print函數 34 return 0; 35 } 36 37 //動態聯編,可以定義基類的指針,指向派生類的時候可以調用其中的虛函數進行操作。
運行結果如下:
如有錯誤,歡迎批評指正哈。