• C++中子类出现与父类同名成员函数如果调用父类函数


    创造一个子类对象,默认情况下访问父类和子类中都有的成员函数会访问到子类的成员函数。如果想要访问父类的成员函数需要加上父类作用域

    #include <bits/stdc++.h>
    using namespace std;
    const int maxn = 1e5 + 5;
    class people
    {
    public:
        void fun(){
            printf("people 的 fun()");
        }
        void fun(int a){
            printf("people 的 fun(int a)");
        }
    };
    class student : public people
    {
    
    public:
        void fun(){
            printf("student 的 fun()");
        }
    };
    int main()
    {
        student stu;
        //使用下面这种方式来访问父类fun(int)函数会出错
        //原因:如果子类和父类中出现同名的成员函数,子类的同名函数会隐藏掉父类所有的同名成员函数
        //如果想访问父类中被隐藏的同名成员函数,需要加作用域,同样你想要访问父类中fun()函数也需要加上作用域
        //stu.fun(1);
        stu.people::fun(1);
        return 0;
    }

    如上面那个例子,子类写了函数fun(),没有写函数fun(int),但依然访问不到父类的fun(int),因为:

    如果子类和父类中出现同名的成员函数,子类的同名函数会隐藏掉父类所有的同名成员函数。如果想访问父类中被隐藏的同名成员函数,需要加作用域
     
    如果把上面函数变成静态成员函数也是一样的
    #include <bits/stdc++.h>
    using namespace std;
    const int maxn = 1e5 + 5;
    class people
    {
    public:
        static void fun(){
            printf("people 的 fun()");
        }
        static void fun(int a){
            printf("people 的 fun(int a)");
        }
    };
    class student : public people
    {
    
    public:
        static void fun(){
            printf("student 的 fun()");
        }
    };
    int main()
    {
        student stu;
        //使用下面这种方式来访问父类fun(int)函数会出错
        //原因:如果子类和父类中出现同名的成员函数,子类的同名函数会隐藏掉父类所有的同名成员函数
        //如果想访问父类中被隐藏的同名成员函数,需要加作用域,同样你想要访问父类中fun()函数也需要加上作用域
        //stu.fun(1);
        stu.people::fun(1);
        return 0;
    }
     
     
     
  • 相关阅读:
    程序员为什么难管理?
    Python多继承
    如何从程序员走向管理层?
    为什么Python能超越JAVA,有什么优势?
    HTTP协议简介与在python中的使用详解
    人力资源管理书籍推荐,这本书HR必看
    把市面上的书翻了个遍,找到这五本经典营销管理书籍推荐给大家
    服务器部署之 cap deploy:setup
    【转】D3DXLoadSkinMeshFromXof函数及.x在不同dx版本中
    【转】C/C++字节对齐算法
  • 原文地址:https://www.cnblogs.com/kongbursi-2292702937/p/14724501.html
Copyright © 2020-2023  润新知