🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# C++ 函数覆盖 > 原文: [https://beginnersbook.com/2017/09/cpp-function-overriding/](https://beginnersbook.com/2017/09/cpp-function-overriding/) 函数覆盖允许我们在子类中具有已存在于父类中的相同函数。子类继承父类的数据成员和成员函数,但是当您想要覆盖覆盖中的函数时,您可以使用函数覆盖。这就像在子类中创建旧函数的新版本一样。 ## 函数覆盖示例 要覆盖函数,您必须在子类中具有相同的签名。签名是指数据类型和参数序列。这里我们在父函数中没有任何参数,所以我们没有在子函数中使用任何参数。 ```cpp #include <iostream> using namespace std; class BaseClass { public: void disp(){ cout<<"Function of Parent Class"; } }; class DerivedClass: public BaseClass{ public: void disp() { cout<<"Function of Child Class"; } }; int main() { DerivedClass obj = DerivedClass(); obj.disp(); return 0; } ``` 输出: ```cpp Function of Child Class ``` > **注意:**在函数覆盖中,父类中的函数被称为被覆盖函数,子类中的函数称为覆盖函数。 ## 如何从子类调用被覆盖函数 正如我们在上面看到的那样,当我们调用函数(涉及覆盖)时,会调用子类函数(覆盖函数)。如果要通过使用子类的对象来调用被覆盖的函数,该怎么办?您可以通过创建子类对象,并使父类的引用指向它来实现。让我们举个例子来理解它。 ```cpp #include <iostream> using namespace std; class BaseClass { public: void disp(){ cout<<"Function of Parent Class"; } }; class DerivedClass: public BaseClass{ public: void disp() { cout<<"Function of Child Class"; } }; int main() { /* Reference of base class pointing to * the object of child class. */ BaseClass obj = DerivedClass(); obj.disp(); return 0; } ``` 输出: ```cpp Function of Parent Class ``` 如果你想从覆盖函数调用被覆盖的函数,那么你可以这样做: ```cpp parent_class_name::function_name ``` 要在上面的例子中执行此操作,我们可以在子类的`disp()`函数中编写以下语句: ```cpp BaseClass::disp(); ```