#include <iostream>
using namespace std;
class CFatherSum //父类Sum
{
public:
int m_iVar; //公用数据成员
void money(){cout<<"Member of CFatherSum"<<endl;} };
class CFatherBru //父类Bru
{
public:
int m_iVar;
void money(){cout<<"Member of CFatherBru "<<endl;} };
class CFatherObam //父类Obam
{
public:
int m_iVar;
void money(){cout<<"Member of CFatherObam"<<endl;}
//int setPri(){return m_iPriVar=m_iVar+99;}
void getPri(){cout<<" Private member of CFatherObam is"<<(m_iPriVar=m_iVar+)<<endl;}
private:
int m_iPriVar; //私有成员 };
class CSon:public CFatherSum,public CFatherBru,public CFatherObam //继承父Sum,Bru,Obam
{
public:
int m_iVar;
void money(){cout<<"Member of CSon"<<endl;} }; //主函数
int main()
{
CSon son;
CSon *pSon=&son; son.m_iVar=; //子类数据成员
son.money(); //子类函数 son.CFatherObam::m_iVar=; //父类数据成员
son.CFatherObam::money(); //父类函数
son.CFatherObam::getPri(); //访问Obam父私有成员 pSon->CFatherObam::getPri(); //指针方法 getchar();
return ; }
结果:
类图:
结论:通过作用域分辨符,明确访问目的,解决同名隐藏问题。
派生类中声明了与基类函数同名的方法,即使函数参数表不同,从基类继承的同名方法的所有重载也都会被隐藏。