虚基类与抽象类的问题

来源:百度知道 编辑:UC知道 时间:2024/06/16 02:25:33
看书上讲虚基类与抽象类的这一节,看不懂,请教高手虚基类与抽象类使用上有什么具体的区别呢.虚基类是否一定要是抽象类呢,虚基类可不可以是一个不带纯虚函数的普通类呢.

虚基类是相对于它的派生类而言的,它本身可以是一个普通的类。
只有它的派生类虚继承它的时候,它才称作虚基类,如果没有虚继承的话,就称为基类。比如类B虚继承于类A,那类A就称作类B的虚基类,如果没有虚继承,那类B就只是类A的基类。
虚继承主要用于一个类继承多个类的情况,避免重复继承同一个类两次或多次。
例如 由类A派生类B和类C,类D又同时继承类B和类C,这时候类D就要用虚继承的方式避免重复继承类A两次。
而抽象类是指带有有一个或一个以上的纯虚函数的类。抽象类一般值用于继承,不能定义类对象,但可以定义类指针和引用。

当继承关系自顶至下出现菱形路线时,最底层的派生类必然会重复继承最顶层基类的成员,所以定义虚基类是为了解决这种重复继承的问题。抽象类是包含纯虚函数的类,它不能定义对象,在类中定义虚函数是为了解决基类的指针能够调用派生类的函数也就是所谓的“多态性”,让一个命令实现多种响应。