实现动态连编,即执行哪个函数不是编译时就决定的,而是运行时才绑定的. for example: 比如你想定以几个类来表现狗和猫的行为,它们都会叫,但是叫声不同(猫为喵喵,狗为汪汪),你就定义一个基类: class Animal { public: virtual void voice(); }; class Dog { public: void voice(){//定义狗的行为} }; class Cat { public: void voice(){//定义猫的行为} }; 这样的话当你这样用的时候: Dog d; Cat c; Animal * pa; pa=&d; pa->voice();//调用Dog::voice() pa=&c; pa->voice();//调用Cat::voice() 你可以通过调用同一个函数而视指针所指对象的不同而调用不同版本的函数。