#includeusing namespace std;//-------------------------------class A1{public: int a;public: void m();};void A1::m() { cout<<"A1::m():a="< a<
A1::m():a=34
A2::m(),a=32432A1::a=34A2::a=32432*/
上面是两个基类有同样名称和形式的函数,都被继承到了子类中。访问他们的时候,要加上作用域才能正确地访问。
进一步来看,如果两个类都从同一个类派生,并没有重写某些函数,再有一个子类继承了它们两个。[共同基类产生的二义性]
情况就和上面类似了。代码如下:
#includeusing namespace std;#include class A{public: int m_ax; void show(); A(); A(int a);};A::A(){}A::A(int val){ this->m_ax = val;}void A::show(){ cout << "A::m_ax = "< <
专门解决共同基类产生的二义性的办法还有虚基派生。
见另一篇:
c++, 虚基派生 : 共同基类产生的二义性的解决办法
http://www.cnblogs.com/mylinux/p/4096926.html