C++多重继承的简单案例

问题:C++多重继承的简单案例

本程序通过VC++ 6.0编译与测试,其中A,B为C的父类,具体代码如下:

//多重继承造成的错误
#include <iostream>
using namespace std;
class A //父类A
{
private:
	int a;
public:
	A(int i):a(i){};
	void print()
	{
		cout<<a<<endl;
	}
};

class B  //父类B
{
private:
	int b;
public:
	B(int j):b(j){};
	void print()
	{
		cout<<b<<endl;
	}
};

class C:public A,public B  //子类C继承自A,B类
{
private:
	int c;
public:
	C(int i,int j,int k):A(i),B(j),c(k){}
	void get_ab()
	{
		A::print();
		B::print();
	}
};

int main()
{
	C x(5,8,10);
	x.get_ab();  //get_ab只在子类C中声明,运行无误
	x.print();   //A,B父类中同时存在print,编辑即出现错误
	return 0;
}


编译器报错:

//对于多重继承的正确使用
#include <iostream>
using namespace std;
class A //父类A
{
private:
	int a;
public:
	A(int i):a(i){};
	void print()
	{
		cout<<a<<endl;
	}
};

class B  //父类B
{
private:
	int b;
public:
	B(int j):b(j){};
	void print()
	{
		cout<<b<<endl;
	}
};

class C:public A,public B  //子类C继承自A,B类
{
private:
	int c;
public:
	C(int i,int j,int k):A(i),B(j),c(k){}
	void get_ab()
	{
		A::print();
		B::print();
	}
};

int main()
{
	C x(5,8,10);
	x.get_ab();  //get_ab只在子类C中声明,运行无误
	//x.print();   //A,B父类中同时存在print,编辑即出现错误
	//解决方法↓
	x.A::print();//添加作用域
	return 0;
}

程序运行结果:



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值