zoukankan      html  css  js  c++  java
  • 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;
    }
     
     
     
  • 相关阅读:
    工程师死绝的世界答案-python3版
    PEP 530 -- 异步推导式
    pandas爬虫
    mac下安装memcache
    mac下安装redis
    mac安装adb
    风热感冒,风寒感冒,病毒性感冒,细菌性感冒
    网络异常时抓包操作说明tcpdump+Wireshark
    你家酱油“氨基酸态氮”是多少?酱油的选择
    买安卓手机的一点心得
  • 原文地址:https://www.cnblogs.com/kongbursi-2292702937/p/14724501.html
Copyright © 2011-2022 走看看