zoukankan      html  css  js  c++  java
  • 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;
    
    }

    结果:

    类图:

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

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

  • 相关阅读:
    SpringMVC整合redis(Spring Data Redis)
    maven——pom.xml
    腾讯云Nginx配置HTTPS
    LNMP运行环境搭建
    Mac——homebrew安装PHP环境
    Yii2之路——安装配置
    Linux之路——FFmpeg安装
    PHP之路——geohash查找附近的人
    PHPStorm对laravel代码自动提示
    shell命令总结
  • 原文地址:https://www.cnblogs.com/liunnis/p/4463871.html
Copyright © 2011-2022 走看看