C++面向对象入门(二十九)虚基类
虚基类:派生类A继承自多个基类B,C,..., 而B,C,...又继承自同一个基类D, 若在B,C,...基类定义继承关系时, 声明基类D为虚基类,
则在A中自会产生一个基类对象
作用:解决二义性问题
代码示例:
#include <iostream> using namespace std; /* 虚基类:派生类A继承自多个基类B,C,..., 而B,C,...又继承自同一个基类D, 若在B,C,...基类定义继承关系时, 声明基类D为虚基类, 则在A中自会产生一个基类对象 作用:解决二义性问题 */ class A46 { public: A46(); int val; }; class B46 :public virtual A46 { public: void setVal() { cout << "before setVal, val = " << val << endl; val = 2; } }; class C46 :public virtual A46 { public: void setVal() { cout << "before setVal, val = " << val << endl; val = 3; } }; class D46 :public B46, public C46 { public: void test(); }; int main() { D46 d; d.test(); d.B46::setVal(); d.test(); d.C46::setVal(); d.test(); system("pause"); } A46::A46():val(1) { } void D46::test() { cout << "val = " << val << endl; }
路漫漫其修远兮,吾将上下而求索。