虚函数:
格式:virtual void fun1();
虚函数最关键的特点是“动态联编”,它可以在运行时判断指针指向的对象,并自动调用相应的函数。即:可以用父类的指针在运行时调用子类的函数。(多态)
定义一个函数为虚函数,不代表函数为不被实现的函数 ,定义他为虚函数是为了允许用基类的指针来调用子类的这个函数 .
纯虚函数:
格式:virtual void fun() = 0;
定义一个函数为纯虚函数,才代表函数没有被实现,定义他是为了实现一个接口,起到一个规范的作用,规范继承这个类的程序员必须实现这个函数.有纯虚函数的类不能实例化一个对象。
具备多态特性的类的析构函数,有必要声明为virtual:
如果将析构函数的virtual修饰去掉,会发现析构的时候,始终只调用了基类的析构函数。