题目8单选题
多重继承会产生命名冲突,例如在如下的菱形结构中:struct A { void f( ); int a;};struct B:public A { void g( ); int b;};struct C: public A { void h( ); int c;};struct D: public B, public C { void k( ); int d;};采用虚基类会改变D类对象的存储结构,但对于D中成员函数 f 的命名冲突并没有过多的处理.C++语言这样做一定是有道理的,那么合理的说法是A. D中的两个f函数,是以重载的形式出现的,不用虚基类也没问题,因此解决函数冲突不是虚基类的主要目的B. 虚基类本质上是解决地址冲突的问题.实际上虚基类在改变了对象存储结构的同时,也采用类似的方法,改变了函数的存储结构C. D中两个a,同名但地址不同;但D中两个f函数,同名而且实际地址也相同的.因此解决实例变量的地址冲突问题成为虚基类的主要目的D. D中两个a分别来自类B和类C,其类型、大小可能会不同;但D中两个f函数的内部表示都是指针,大小固定.因此解决实例变量的地址冲突问题成为虚基类的主要目的