虚函数和虚继承

本文转自 http://hi.baidu.com/haiksn/blog/item/2c4b2ccba290a119bf09e63b.html 以及陈皓的博客 http://blog.csdn.net/haoel/article/details/1948051#


多态性:

  • 基类指针可以指向派生类对象,在函数调用时,可以通过基类指针调用派生类的成员函数,从而使基类指针具有“多种形态”,故称为多态。

虚函数:

  • 是C++中多态性的一个重要体现
  • 利用基类指针访问派生类中的成员函数,这种情况下使用虚函数,这种情况下采用的是动态绑定技术
  • 在派生类中一般都要实现一个基类中的虚函数,‘覆盖’它,没有‘覆盖的’虚函数是没有什么意义的

动态绑定:

  • 基类指针是调用派生类的中的成员函数?还是调用基类中的成员函数?要到程序运行时确定。主要要看指针所指向的对象。

虚拟继承:

  • 解决多重继承中派生类成员函数调用模糊问题。
  • 比如类A中有一个函数print(),类B继承A,类C继承A,类D继承类B和类C,这个时候,类D中就有两个print函数,一个是从B继承得到的,一个是从C继承得到的,则,类D的对象调用print函数就会出现print模糊的编译错误。解决办法:类B虚拟继承A。类C虚拟继承A,类D继承B,C时,只拷贝A中的数据成员和函数成员一次,再遇到拷贝时候就忽略了!

以下文字摘自深度探索C++对象模型

  • C++在布局以及存取时间上的主要额外负担主要是由virtual引起的:虚函数虚基类(保证即使多次出现在继承体系中,也仅有一个单一而被共享的实体) 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值