#include
using namespace std;
class Father
{
public:
Father() {
cout << "Father" << endl;
}
~Father() {
cout << "~Father" << endl;
}
int m_bear;
int m_age;
};
class Mother
{
public:
Mother() {
cout << "Mother" << endl;
}
~Mother() {
cout << "~Mother" << endl;
}
int m_bra;
int m_age;
};
class Son : public Mother, public Father
{
public:
Son() {
cout << "Son" << endl;
}
~Son() {
cout << "~Son" << endl;
}
};
int main()
{
Son jack;
cout << sizeof(jack) << endl;
jack.m_bear = 10;
// jack.m_age = 20;
jack.Mother::m_age = 20;
cout << jack.Father::m_age << endl;
return 0;
}
在类Son中,同时继承了Mother和Father类,这两个类中都有一个名为m_age的成员变量。当使用jack.m_age = 20时,编译器无法确定要访问Mother类中的m_age还是Father类中的m_age,因此会产生二义性错误。为了解决这个问题,可以使用作用域限定符来指明要访问的是哪个类中的m_age,例如jack.Mother::m_age = 20。