分类: C/C++
2010-08-18 18:04:03
很少用到这些知识,即使是经常写c++程序,对这些概念可能都处于模糊不清的状态。如果你觉得你明白,那你能一定能清晰的回答如下几个问题:
1:虚基类是独立存在的一个类吗?如果是,它有什么特征?
2:虚基类就是抽象类吗?
3:抽象类是不是只能做为基类?
4:虚函数与虚拟继承有什么关系?
答案:
虚基类,并不是一个单独存在的类,顾名思义,之所以叫“基类”是因为它发生了派生的动作,“虚”刚表明它是以virtual关键字被继承的,也就是说有了虚拟继承才有虚基类。如此一来,任何一个类都可以做为虚基类。
虚基类的作用:当继承关系呈现出菱形◇关系时,最上层基类将会在最下层类中产生两份数据拷贝,当使用最下层类访问上层基类的数据时将产生二义性,虚基类的作用便是消除这种二义性。
所以,虚基类和抽象类没有关系,抽象类是指含有至少一个纯虚函数的类。抽象类只能用作基类,不能实例化。
虚函数的作用却是用来实现动态联编,实现c++的多态性特性,如此一来,一条指令可实现多种功能。基类指针指向子类对象的引用这一功能在此可发挥得淋漓尽致。