1.
2.
3.
4.
5.
纯虚函数的定义形式:virtual
在虚函数和纯虚函数的定义中不能有static标识符,原因很简单,被static修饰的函数在编译时候要求前期bind,然而虚函数却是动态绑定(run-time
6.
error
ClassName::virtualFunctionName(void)"
7.
8.
该虚函数,由多态方式调用的时候动态绑定。
9.
函数
10.
a.编译时多态性:通过重载函数实现
b
11.
1 //father class 2 3 class Virtualbase 4 5 { 6 7 public: 8 9 virtual void Demon()= 0; //prue virtual function 10 11 virtual void Base() {cout<<"this is farther class"<<span style="margin: 0px; padding: 0px; font-family: 'Courier New' !important;">}; 12 13 } 14 15 //sub class 16 17 class SubVirtual :public Virtualbase 18 19 { 20 21 public: 22 23 void Demon() { cout<<" this is SubVirtual!"< 24 25 void Base() { cout<<"this is subclass Base"< 26 27 } 28 29 34 35 void main() 36 37 { 38 39 Virtualbase* inst = new SubVirtual(); //multstate pointer 40 41 inst->Demon(); 42 43 inst->Base(); 44 45 // inst = new Virtualbase(); 46 47 // inst->Base() 48 49 return ; 50 51 }
参考:
1.
这篇文章分析了虚函数的底层实现,大家可以看看。
2.
这篇讲的还算简单明了吧。