zoukankan      html  css  js  c++  java
  • 成员变量覆盖

    父子间的同名成员变量:

             子类成员将隐藏父类的成员,但是父类成员变量只是被隐藏,父类的同名函数依旧存在于子类中。

             可以通过作用域分辨符( :: )访问父类的同名同名变量。

             通过子类对象调用同名变量时,只会调用子类的成员变量。

    #include <iostream>
    #include <string>
    
    using namespace std;
    
    class Parent
    {
    public:
        int value;
    };
    
    class Child : public Parent
    {
    public:
        int value;
    };
    
    int main()
    {
        Child c;   
        c.value = 100;          // 访问子类的value
        c.Parent::value = 100;  // 通过父类名和作用域分辨符访问父类的value   
        return 0;
    }

    父子间的同名成员函数:

            子类继承父类时同名函数不是函数重载,原因是作用域不同,只是函数同名覆盖。

            父类的同名函数只是被隐藏,但依旧存在于子类中。

            通过作用域分辨符( :: )访问父类同名函数。

            通过子类对象调用同名成员函数时,只会调用子类的成员函数。

            子类可以定义和父类中完全相同的同名函数。

    #include <iostream>
    #include <string>
    
    using namespace std;
    
    class Parent
    {
    public:
        void add(int x)
        {
            std << "parent : add(int x) " << endl;
        } 
        void add(int x, int y)
        {
            std << "parent : add(int x, int y) " << endl
        }
    };
    
    class Child : public Parent
    {
    public:
        void add(int x)  // 和父类中完全相同的函数,作用域不同,合法
        {
            std << "Child : add(int x)" << endl;
        }   
        void add(int x, int y) // 和父类中完全相同的函数,作用域不同,合法
        { 
            std << "Child : add(int x, int y)" << endl;
        }
        void add(int x, int y, int z) // 和父类中函数名相同的函数, 作用域不同,只是覆盖,不是重载
        {
            std << "Child : add(int x, int y, int z)" << endl;
        }
    };
    
    int main()
    {
        Child c;
        c.add(1);            // Child : add(int x)
        c.add(1,1);          // Child : add(int x, int y)
        c.add(1,1,1);        // Child : add(int x, int y, int z)
        
        c.Parent::add(1);    // parent : add(int x)
        c.Parent::add(1,1);  // parent : add(int x, int y)
        return 0;
    }
  • 相关阅读:
    Matlab中如何将(自定义)函数作为参数传递给另一个函数
    字幕文件 WebVTT 与 srt 之间的互相转化
    MathType 常用快捷键
    如何解决mathpage.dll或MathType.dll文件找不到问题
    Accelerating Matlab
    VR 相关专业词汇
    Computer Graphics Research Software
    C 和 C++ 混合代码 cmath编译出错
    CG&CAD resource
    Python 面向对象编程——初见
  • 原文地址:https://www.cnblogs.com/zsy12138/p/10847899.html
Copyright © 2011-2022 走看看