虚函数是因为基类和派生类的特殊关系才产生的
使用方式是直接在函数名前加 virtual
主要作用是使派生类用自己的fun函数,而不是用基类的fun函数(fun函数只是举例)。
因为基类的函数先产生而派生类的需求是后产生的,这两者有一个年代差,所以基类的fun函数满足不了派生类的需求,要派生类自己定义一个fun函数来代替它。在写基类的时候,在特定函数的前面加上virtual,可以使派生类调用自己的fun函数,而不是基类的。这样实现了功能的进步和多样性。
纯虚函数 virtual void fun() = 0; 不需要写关于纯虚函数的定义,该函数也不能被调用。其实它只是把这个名称继承到子类,然后再由子类进行定义。
这样做是因为这个函数在不同的派生类有不同的实现方法,基类用不到它。
把基类的析构函数设为虚函数,这很好理解,写子类的析构函数时不需要再写virtual。
有个例子:
Base *pBase = new Derived;
. . .
delete pBase;
假设Derived类是Base的派生类,并且类Base的析构函数被标记为virtual。
那么在delete的时候,程序会先调用Derived的析构,再调用Base的析构。