在C++中,如果一个派生类(子类)从基类(父类)继承,并且两个类都有一个同名的成员函数,那么在访问这个同名函数时,派生类中的函数会覆盖基类中的函数。这种行为称为函数重写(Function Overriding)。
当你在派生类中使用基类的成员函数时,编译器会根据对象的实际类型来选择正确的函数。如果对象是基类的实例,那么将调用基类的函数;如果对象是派生类的实例,那么将调用派生类的函数。
下面是一个简单的例子:
#includeclass 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()
函数时,输出的是派生类的函数。