c++安全之虚表

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值