哈,我拿effective C++上的话来说吧。
有一个基类person,和两个派生类student和teacher,person里面可以定义一些函数比方说基本的功能eat(),study(),student和teacher都可以继承这两个函数(因为通用),不需要重新定义,但是新的派生类可以派生出自己独特的行为,比方说student可以有submit()提交作业功能,teacher有check()检查作业功能,这就可以分开定义了。
所以派生类可以说是完善而且独立的,基类定义的功能子类不用重复定义,但是虚函数是要重新定义的,纯虚函数在派生类必须需要定义。
c++中如果派生类对基类继承过来的函数功能不需要扩充的话,可以直接使用基类中的函数。因为派生类中继承了基类的属性和方法。
如果基类中的实现和派生类中的方法实现不同的话,可以用虚函数。派生类继承了基类虚函数的接口和默认实现,但是它可以对这个虚函数重新实现。
一般来说派生类的行为不可能和基类完全一样,成员和函数都会有扩充。
基类的功能都有,不需要定义就可以调用用基类的函数,如果重新定义了,则默认调用的是新的函数,但是你还可以用::符号指定调用基类的函数。当然要注意基类的是private 、protected、public ,稍微还有点区别。
如果基类的函数有定义,派生类可以不用定义直接调用,如果基类的函数没有定义(纯虚函数)则派生类在调用前必须定义该函数的函数体。
关键看那个函数是不是 纯虚函数(也就是 基础类 只是声明没有定义)。如果不是,且功能已经足够了你可以直接调用.