Warm tip: This article is reproduced from serverfault.com, please click

c++-如何从派生类函数调用父类函数?

(c++ - How to call a parent class function from derived class function?)

发布于 2008-12-10 19:35:45

如何使用 C++ 从派生类调用父函数?例如,我有一个名为 的类parent,以及一个child从父派生的名为 的类每个类中都有一个print函数。在孩子的打印功能的定义中,我想调用父母的打印功能。我该怎么做呢?

Questioner
IaCoder
Viewed
11
942 2017-01-11 17:48:20

我将冒着说明显而易见的风险:你调用该函数,如果它是在基类中定义的,则它在派生类中自动可用(除非它是private)。

如果派生类中存在具有相同签名的函数,你可以通过添加基类名称后跟两个冒号来消除歧义base_class::foo(...)你应该注意到,不像Java和C#,C ++并没有对“基础类”(关键字superbase),因为C ++支持多重继承,这可能导致歧义。

class left {
public:
    void foo();
};

class right {
public:
    void foo();
};

class bottom : public left, public right {
public:
    void foo()
    {
        //base::foo();// ambiguous
        left::foo();
        right::foo();

        // and when foo() is not called for 'this':
        bottom b;
        b.left::foo();  // calls b.foo() from 'left'
        b.right::foo();  // call b.foo() from 'right'
    }
};

顺便说一下,你不能直接从同一个类派生两次,因为没有办法引用一个基类而不是另一个基类。

class bottom : public left, public left { // Illegal
};