第2个回答 2008-05-21
直接用派生类的对象是可以的。但是虚函数的作用体现在多态上。
比如类A是个基类,类B,C,D由类A继承。
现在我要写个函数func1,对BCD三个类的对象都通用,函数内部调用BCD三个类都有的一个函数func2。
但是BCD三个类是不同的类,那么这个函数可能就要重载三次,写成
func1(B b){b.func2};
func1(C c){c.func2};
func1(D d){d.func2};
这样才能区分传进去的是哪个类的对象在调用func2,这样在继承得多了的时候显得很麻烦。虚函数多态就可以解决这样的问题。
把func2在类A中定义成虚函数,然后只要写一个func1
func1(A *a);
此时传B *b,C *c,D *d三个指针对象进去,都可以相应的调用各自的func2了。这是面向对象思想的一个体现