封装可以使得代码模块化,继承可以扩展已存在的代码,他们的目的都是为了代码重用,而多态的目的则是为了接口重用。也就是说,不论传递过来的究竟是那个类的对象,函数都能够通过同一个接口调用到适应各自对象的实现方法。
结果是1,2,1,4,3,2。
是由于每个虚函数都有一个虚函数列表。什么是虚函数?虚函数是在基类中被声明为virtual,并在派生类中重新定义
的成员函数,可实现成员函数的动态覆盖(Override)。说到虚函数,很容易联想到纯虚函数。 纯虚函数是在基类中
声明的虚函数,它在基类中没有定义,但要求任何派生类都要定义自己的实现方法。在基类中实现纯虚函数的方法是
在函数原型后加“=0”,virtual void funtion()=0 。包含纯虚函数的类称为抽象类。由于抽象类包含了没有定义的纯虚函
数,所以不能定义抽象类的对象。
C++支持两种多态性:编译时多态性,运行时多态性。
a、编译时多态性:通过重载函数实现
b、运行时多态性:通过虚函数实现。