虚函数、纯虚函数、虚函数表、虚析构函数(一)

对于虚函数的相关概念,我打算分两部分来分析,上篇是虚函数和纯虚函数。

记得毕业那会有一次面试,面试官问我面向对象的三大特征是什么,那必须是封装、继承、多态啦,可是再进一步问我多态是什么概念,主要是用什么来实现多态的,我就含糊其辞了。

首先来说一下虚函数的关键字virtual:

virtual用来修饰类的成员函数,被virtual修饰的函数就叫做虚函数。virtual不能用于修饰以下函数:

1.构造函数:创建对象是,必须明确对象,而且在创建对象时,虚函数表也并未创建,所以不能构造函数不能定义为虚函数

2.内联函数:内联函数是在编译阶段就地展开,而虚函数则是在运行阶段使用虚函数表动态联编找到的,一个静态联编、一个动态联编,违背virtual概念

3.类体之外的全局函数:全局函数不属于类,virtual是基于类的

4.静态成员函数:静态成员函数属于类而不属于某个对象,就没有this指针,虚函数表也就不能将静态成员函数的入口地址添加进去,故不能使用virtual修饰

猜你喜欢

转载自www.cnblogs.com/leoncumt/p/10441314.html
今日推荐