多态,这玩意就是一泛型技术,即就是通过不变的接口实现可变的算法。一般常见的
设计模式都用到这哥们,学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了。有意思 哈哈。。。