C++多继承时继承了同一个基类的情况

时间:2022-07-09 17:22:56


base1和base2继承了base0

myclass继承了base1和base2

/*
软件作者:邱于涵
时间:2015年2月21日18:55:54
*/
#ifndef BASE0_H
#define BASE0_H
class base0{
public:
	int x;
	base0(int);
};
#endif
/*
base1和base2都继承 base0
*/
/*
软件作者:邱于涵
时间:2015年2月21日18:55:54
*/
#include "base0.h"
base0::base0(int x)
{
	this->x = x;
}
/*
软件作者:邱于涵
时间:2015年2月21日18:55:54
*/
#ifndef BASE1_H
#define BASE1_H
#include "base0.h"
class base1 :public base0
{
public:
	base1(int);
	//继承

};
#endif
/*
软件作者:邱于涵
时间:2015年2月21日18:55:54
*/
#include "base1.h"
base1::base1(int x) :base0(x)
{
	//构造函数
}
/*
软件作者:邱于涵
时间:2015年2月21日18:55:54
*/
#ifndef BASE2_H
#define BASE2_H
#include"base0.h"
class base2 :public base0
{
public:
	base2(int);
	//继承
};
#endif
/*
软件作者:邱于涵
时间:2015年2月21日18:55:54
*/
#include"base2.h"
base2::base2(int x) :base0(x)
{
//构造函数
}
/*
软件作者:邱于涵
时间:2015年2月21日18:55:54
*/
#include "base1.h"
#include "base2.h"
class myclass :public base1, public base2
{
	//同时继承两个类
	//但是他们 有共同基类
public:
	myclass(int);
};
/*
软件作者:邱于涵
时间:2015年2月21日18:55:54
*/
#include "myclass.h"
myclass::myclass(int x) :base1(x), base2(x)
{
   //多继承  
	//构造函数
}
/*
软件作者:邱于涵
时间:2015年2月21日18:55:54
*/
#include 
#include "myclass.h"
using namespace std;
int main(){
	myclass *p = new myclass(12);
	cout << p->base1::x << endl;
	//////////////////////
	//base0 *q = p;  //多继承有两个base0基类  二义性错误
	base0 *q = (base1*)p;
	cout << q->x << endl;
	cin.get();
}

C++多继承时继承了同一个基类的情况