码迷,mamicode.com
首页 > 编程语言 > 详细

C++虚函数原理

时间:2015-08-05 22:11:57      阅读:143      评论:0      收藏:0      [点我收藏+]

标签:

类中的成员函数分为静态成员函数非静态成员函数,而非静态成员函数又分为普通函数虚函数

 

Q: 为什么使用虚函数

A: 使用虚函数,我们可以获得良好的可扩展性。在一个设计比较好的面向对象程序中,大多数函数都是与基类的接口进行通信。因为使用基类接口时,调用基类接口的程序不需要改变就可以适应新类。如果用户想添加新功能,他就可以从基类继承并添加相应的新功能。

Q: 简述C++虚函数作用及底层实现原理

A: 要点是要答出虚函数表虚函数表指针的作用。

C++中虚函数使用虚函数表和虚函数表指针实现,虚函数表是一个类的虚函数的地址表,用于索引类本身以及父类的虚函数的地址,假如子类重写了父类的虚函数,则对应在虚函数表中会把对应的虚函数替换为子类的函数的地址(子类中可以不是函数,但是必须同名);虚函数表指针存在于每个对象中(通常出于效率考虑,会放在对象的开始地址处),它指向对象所在类的虚函数表的地址;在多继承环境下,会存在多个虚函数表指针,分别指向对应不同基类的虚函数表。

 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

虚函数表是每个有虚函数的对应一个。虚函数表指针是每个对象对应一个。

 

 

 

 

ref:

http://blog.csdn.net/haoel/article/details/1948051

http://songlee24.github.io/2014/09/02/cpp-virtual-table/

C++虚函数原理

标签:

原文地址:http://www.cnblogs.com/forcheryl/p/4705848.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!