问题: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;
}
程序运行结果: