当前位置:   article > 正文

[C/C++]virtual关键字_c语言中virtual

c语言中virtual

和Inline有相同点,Inline就是编译的时候将函数直接展开来,不使用链接方式。Virtual也是影响编译和链接的一种修饰符。

  • Virtual基类:(虚拟继承)用Virtual修饰类,派生类到基类存在多条路线时(多个继承脉络或者途径),一个这种派生类的对象实例化将包含多个基类对象。用Virtual来避免产生多个基类的对象在多继承下,虚继承就是为了解决菱形继承中,B,C都继承了A,D继承了B,C,那么D关于 A的引用只有一次,而不是 普通继承的 对于A引用了两次(这里需要将A定义成虚类);
  • Virtual函数(虚函数):虚函数,是由于基类的指针可以执行派生类,用virtual定义的函数可以在派生类中重定义,后续引用也是引用派生类,即根据实际的子类对象动态绑定实际调用的方法。相当于允许子类重写覆盖基类函数;
  • Virtual纯虚函数:也是类似作用,不写明具体实现,由子类进行实现。不在编译阶段静态绑定,而是运行的时候进行动态绑定。

综上:vitual关键字的引入,可以理解为阻止编译阶段的静态绑定,将绑定(虚函数)和约束工作(虚基类)转移到运行时动态处理。(在运行的时候,通过虚函数列表,去寻找每个对象对应的对于虚函数的实现,然后进行使用,其实类似C语言中的查表)
virtual是不能够实例化的,所以一般多用于接口类。这个就是C语言的多态性。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/43467
推荐阅读
相关标签
  

闽ICP备14008679号