• C++派生类成员访问作用域,同名重载


    #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+99)<<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=1;                        //子类数据成员
        son.money();                        //子类函数
    
        son.CFatherObam::m_iVar=2;            //父类数据成员
        son.CFatherObam::money();            //父类函数
        son.CFatherObam::getPri();            //访问Obam父私有成员
    
        pSon->CFatherObam::getPri();        //指针方法
        
    
    
        getchar();
        return 0;
    
    }

    结果:

    类图:

    结论:通过作用域分辨符,明确访问目的,解决同名隐藏问题。

           派生类中声明了与基类函数同名的方法,即使函数参数表不同,从基类继承的同名方法的所有重载也都会被隐藏。

  • 相关阅读:
    ASP.NET网站和ASP.NET应用程序的区别
    客户端状态的优缺点
    Web.config配置文件的优点
    ASP.NET中视图状态的优点和缺点
    java常见集合及其用途
    java Socket编程(一)
    java Soket编程(三)
    浏览器到服务器端进行通信的简单理解
    ant 常用命令
    切记,切忌!——转载(收藏以备用)
  • 原文地址:https://www.cnblogs.com/liunnis/p/4463871.html
Copyright © 2020-2023  润新知