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;
    }
     
     
     
  • 相关阅读:
    Windows Server2016环境中安装Oracle12c数据库
    centos7 安装Oracle19C 数据库
    centos7 磁盘分区以及磁盘挂载
    PHP日常开发技巧散记
    代码压缩工具 webpack安装与入门使用【初级】
    程序员修炼之道系列 | 使用曳光弹找到目标
    程序员修炼之道系列 | 不要冲出前灯范围
    程序员修炼之道系列 | 敏捷估算
    程序员修炼之道系列 | “豆腐渣“工程竟然也能做原型
    官宣!禅道与极狐(GitLab)达成深度合作,携手推进开源开放DevOps生态
  • 原文地址:https://www.cnblogs.com/kongbursi-2292702937/p/14724501.html
Copyright © 2011-2022 走看看