先看一下什么是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 //动态联编,可以定义基类的指针,指向派生类的时候可以调用其中的虚函数进行操作。
运行结果如下:
如有错误,欢迎批评指正哈。