在Java里,没有多重继承,在C++里面有,但是,在用的时候,要小心。先看一个错误程序:
#include <iostream>
using namespace std;
class Father
{
public:
void claim()
{
cout << "Father is good!" << endl;
}
};
class Mother
{
public:
void claim()
{
cout << "Mother is good!" << endl;
}
};
class Child : public Father, public Mother
{
};
int main()
{
Child c;
c.claim(); // 二义性
return 0;
}
可以改为:
#include <iostream>
using namespace std;
class Father
{
public:
void claim()
{
cout << "Father is good!" << endl;
}
};
class Mother
{
public:
void claim()
{
cout << "Mother is good!" << endl;
}
};
class Child : public Father, public Mother
{
};
int main()
{
Child c;
c.Father::claim();
c.Mother::claim();
return 0;
}
另外,在菱形继承时,也会出现类似问题,解决方式是采用虚继承。