virtual虚函数

Posted qq2806933146xiaobai

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了virtual虚函数相关的知识,希望对你有一定的参考价值。

  virtual是定义C++中虚函数的关键字,这种函数方法可以被子类继承覆盖,通常使用动态调度实现。这一概念是面向对象程序设计中(运行时)多态的重要组成部分。简言之,虚函数可以给出目标函数的定义,但该目标的具体指向在编译期可能无法确定。

面向对象程序设计中,派生类继承自基类。使用指针引用访问派生类对象时,指针或引用本身所指向的类型可以是基类而不是派生类。如果派生类覆盖了基类中的方法,通过上述指针或引用调用该方法时,可以有两种结果:
  1. 调用到基类的方法:编译器根据指针或引用的类型决定,称作“早绑定”;
  2. 调用到派生类的方法:语言的运行时系统根据对象的实际类型决定,称作“迟绑定”。
虚函数的效果属于后者。如果问题中基类的函数是“虚”的,则调用到的都是最终派生类(英语:most-derived class)中的函数实现,与指针或引用的类型无关。反之,如果函数非“虚”,调用到的函数就在编译期根据指针或者引用所指向的类型决定。
 

以上是关于virtual虚函数的主要内容,如果未能解决你的问题,请参考以下文章

C++ 虚函数 (virtual function)

virtual虚函数

-Wnon-virtual-dtor持有虚函数却不是虚析构

Virtual

virtual成员函数

2016-10-13坚持学习Day4virtual 虚函数