#include <iostream>
#include <string>
using namespace std;
/*---------------------------------
12-17调用基类的同名成员函数时防止调用混淆不清
---------------------------------*/
class a
{
public:
int num()
{return 1;}
};
class b:public a
{
public:
int num() //基类的同名成员函数
{return 2;}
};
class c:public a
{
public:
int num() //基类的同名成员函数
{return 3;}
};
class d:public b,public c
{
public:
int B()
{return b::num();} //若需要频繁调用基类的同名成员函数,则可定义简略地定义一个函数来调用它
};
int main()
{
d d;
// d.a::num(); //d并非由a直接派生而来,如此编译将出错
cout<<d.b::num()<<endl; //调用父类b的成员函数num()
//若需要频繁调用基类的同名成员函数,可采取下面的方式
cout<<"---------"<<endl;
cout<<d.B()<<endl; //调用自个儿的成员函数B()
return 0;
}
运行结果:
C++ 继承 10--减少两义性产生的混淆问题
最新推荐文章于 2024-09-28 21:46:02 发布