c++

C++继承机制怎样处理同名函数

小樊
81
2024-11-08 23:45:25
栏目: 编程语言

在C++中,如果一个派生类(子类)从基类(父类)继承,并且两个类都有一个同名的成员函数,那么在访问这个同名函数时,派生类中的函数会覆盖基类中的函数。这种行为称为函数重写(Function Overriding)。

当你在派生类中使用基类的成员函数时,编译器会根据对象的实际类型来选择正确的函数。如果对象是基类的实例,那么将调用基类的函数;如果对象是派生类的实例,那么将调用派生类的函数。

下面是一个简单的例子:

#include <iostream>

class Base {
public:
    void print() {
        std::cout << "Base class function" << std::endl;
    }
};

class Derived : public Base {
public:
    void print() override { // 使用override关键字明确表示重写
        std::cout << "Derived class function" << std::endl;
    }
};

int main() {
    Base *b = new Base();
    Derived *d = new Derived();

    b->print(); // 输出 "Base class function"
    d->print(); // 输出 "Derived class function"

    delete b;
    delete d;

    return 0;
}

在这个例子中,Derived类重写了Base类的print()函数。当我们通过基类指针调用print()函数时,输出的是基类的函数;而当我们通过派生类指针调用print()函数时,输出的是派生类的函数。

0
看了该问题的人还看了