多態,這玩意就是一泛型技術,即就是通過不變的接口實現可變的算法。一般常見的
設計模式都用到這哥們,學c++懂這是必須的。這東西牽扯到虛函數+虛表,這兩樣東西的
概念百度上可以Google下。
虛表就是一個齷齪的體無完膚的東東。大家都知道類的private以及protected成員不能外界訪問的,
哈哈……虛表讓“一切皆有可能”!代碼如下:
class A
{
private:
virtual void fa()
{
cout<<"A::fa()"<<endl;
}
};
class B:public A
{
private:
virtual void fb()
{
cout<<"B:fb()"<<endl;
}
};
int main(int argc, char* argv[])
{
A *p = new B;
typedef (*Fn)();//函數指針
Fn f = (Fn)(*((int*)(*(int*)p)));//(int*)p虛表地址(int*)*(int*)p虛表中第一個函數地址
//Fn f = (Fn)(*((int*)(*(int*)p)+1));//fb
f();
return 0;
}
子類沒有重載父類的虛函數是一件毫無意義的事情,回頭看上邊代碼:p->fb()是編
譯不過去的,但通過虛表就OK了。有意思 哈哈。。。