虚函数与纯虚函数

虚函数:被virtual关键字修饰的成员函数,就是虚函数。虚函数的作用,用专业术语来解释就是实现多态性(Polymorphism),多态性是将接口与实现进行分离;用形象的语言来解释就是实现以共同的方法,但因个体差异而采用不同的策略。例如可以使用父类的指针指向子类的实例,然后再通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有多种形态,这是一种泛型技术。

  • 虚函数的声明如下:virtual ReturnType FunctionName(Parameter);
    虚函数必须要实现,如果不实现,编译器将会报错。

纯虚函数:在很多情况下,基类本身生成对象是不合情理的。例如,动物作为一个基类可以派生出老虎、孔雀等子类,但动物本身生成对象明显不合常理。为了解决这个问题,方便使用类的多态性,引入了纯虚函数的概念,将函数定义为纯虚函数(方法:virtual ReturnType Function()= 0;),则编译器要求在派生类中必须予以重写以实现多态性。同时含有纯虚拟函数的类称为抽象类,它不能生成对象。

  • 什么时候使用纯虚函数
    1.当想要在基类中抽象出一个方法,而且这个基类只能够被继承,而不能够被实例化;
    2.这个方法必须要在派生类(derived class)中被实现;
    纯虚函数的定义方法为:vritual ReturnType Function(Type) = 0;

虚函数详解

虚函数表

虚函数(Virtual Function)是通过一张虚函数表(Virtual Table)来实现的.在这个表当中,主要是一个类的虚函数的地址表,这张表解决了继承、覆盖的问题.保证其能够真实的反应实际的函数.这样,在有虚函数的类的实例中,这个表被分配在了这个实例的内存当中.

你可能感兴趣的:(虚函数与纯虚函数)