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;
    }
     
     
     
  • 相关阅读:
    ADFS登录界面自定义
    C# 不添加WEB引用调用WSDL接口
    C# 对象转XML 支持匿名类
    NSdata 与 NSString,Byte数组,UIImage 的相互转换
    《.NETer提高效率——环境部署》
    (五) Docker 安装 Nginx
    (六) Docker 部署 Redis 高可用集群 (sentinel 哨兵模式)
    (七) Docker 部署 MySql8.0 一主一从 高可用集群
    (八) Docker 部署 mongodb
    (四) Docker 使用Let's Encrypt 部署 HTTPS
  • 原文地址:https://www.cnblogs.com/kongbursi-2292702937/p/14724501.html
Copyright © 2011-2022 走看看