C++中的多继承应用

多继承就是一个类有多个直接基类的继承关系被称为多继承关系
一个派生类对象拥有多个直接或间接基类的成员。不同名成员访问不会出现二义性。
如果不同的基类有同名成员,派生类对象访问时应该加以识别。
例如:

class A
{
public:
	int a;
	int d;
};
class B {
public:
	int b;
	int d;
};
class C: public A,public B{
public:
	int c;
	int d;
};
void main() 
{
	C c;
	c.a = 1;
	c.b = 2;
	c.c = 3;
	c.A::d = 4;
	c.B::d = 5;
	c.d = 6;
}

如果一个派生类从多个基类派生,而这些基类又有一个共同的基类,则在对该基类中明
的名字进行访问时,可能产生二义性
为了使这个公共基类在派生类中只产生一个子对象,必须对这个基类声明为虚继承,使
这个基类成为虚基类。虚继承声明使用关键字“virtual”

class B
{
public:
	int b;
};
class B1:virtual public B{
public:
	int b1;
	
};
class B2: virtual public B{
public:
	int b2;
};
class C :public B1, public B2 {
private:
};
void main() 
{
	C c;
	c.b;
}

由于类C的对象中只有一个B类子对象,名字b被约束到该子对象上,所以当以不同
路径使用名字b访问B类的子对象时,所访问的都是那个唯一的基类子对象。即
c.B1::b;和c.B2::b;
引用是同一个基类B的子对象。

猜你喜欢

转载自blog.csdn.net/weixin_43778462/article/details/90633927