C++语言程序设计

使用虚函数，我们可以获得良好的可扩展性，在一个设计比较好的面向对象程序中，大多数函数都是与基类的接口进行通信。因为使用基类接口时，调用基类接口的程序不需改变就可以适应新类。如果用户想添加新功能，他就可以从基类继承并添加相应的新功能。例如，上面vehicle类的例子中已经实现了car、truck、boat三种交通工具，然后我们定义一个"很复杂"的函数：
void getmessage(vehicle* v)
{
v->message();
}
若干天后，我们又想在这个程序中加入bus的功能，可以从基类vehicle派生出bus类：
class bus : public vehicle
{
int passenger_load;
public:
void message(void) {cout << "bus message\n";}
};
对于上面的getmessage()函数，由于它"很复杂"，我们不想改变它，那么这个函数可以适应我们添加的新功能吗？答案是肯定的。我们不需要改变函数的任何一部分，就可以适应这个新类。
car mycar;
getmessage(&car); //这是原来的功能
bus mybus;
getmessage(&bus); //这是新功能，同样的用法。
运行结果是：
car message
bus message