从编译器角度理解虚函数和继承

在c++中,继承的概念可以理解为c中得嵌套结构体,对于各种函数,类中的成员函数,类中的友元函数,各种继承的虚拟函数,只要从编译器的角度去理解

就会变得简单。例如下例:

class D{
 public:
     int func_D();
     int v_func_DD();
};

class D1 : public D{
 public:
     int func_D1();
     virtual int v_func_DD();
};

class D2 : public D1{
 public:
     int func_D2();
     int v_func_DD();
     int d1;
};

//....

  函数的具体实现略

//....

 

int main(int argc, char **argv){

 D2 dd2;
 D *d_ptr;
 D1 *d1_ptr;
 D2 *d2_ptr;


 d_ptr = &dd2;
 d1_ptr = &dd2;
 d2_ptr = &dd2;

 

 d_ptr->v_func_DD();//①
 d1_ptr->v_func_DD();//②

 

d1_ptr->func_D2();//③

d2_ptr->func_D2();//④


 return 0;
}

 

在主函

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值