0
点赞
收藏
分享

微信扫一扫

函数重载、重写、重定义

Ewall_熊猫 2022-02-22 阅读 84

 4.2. 同名函数与重载

这是因为子类中的同名成员函数也会覆盖父类中的同名成员函数,不管它们参数是否一样。

子类中的函数和父类中的函数不构成重载,因为处于不同的作用域。

子类中定义了add函数,父类中所有叫add的函数全都被覆盖了。

只需要加上作用域分辨符就可以解决错误:

#include <iostream>
#include <string>

using namespace std;

class Parent
{
public:
    int mi;

    void add(int v)
    {
        mi += v;
    }

    void add(int a, int b)
    {
        mi += (a + b);
    }
};

class Child : public Parent
{
public:
    int mi;

    void add(int v)
    {
        mi += v;
    }

    void add(int a, int b)
    {
        mi += (a + b);
    }

    void add(int x, int y, int z)
    {
        mi += (x + y + z);
    }
};

int main()
{
    Child c;

    c.mi = 100;

    c.Parent::mi = 1000;

    cout << "c.mi = " << c.mi << endl;

    cout << "c.Parent::mi = " << c.Parent::mi << endl;

    c.add(1);
    c.add(2, 3);
    c.add(4, 5, 6);

    cout << "c.mi = " << c.mi << endl;

    cout << "c.Parent::mi = " << c.Parent::mi << endl;

    return 0;
}
举报

相关推荐

0 条评论