Function overriding:其派生类中对基类函数的重新定义,具有相同的返回类型和参数。为了避免这种错误发生,通过使用override来定义基类中的函数避免重写。
Example:
- 在没有定义
override
的情况下,重写基类中的成员函数,不会发生错误。
Code:
Output:#include <iostream> using namespace std; class Base { public: // user wants to override this in // the derived class virtual void func() { cout << "I am in father!" << endl; } }; class Derived : public Base { public: void func() { cout << "I am in derived Son!" << endl; } }; int main() { Base Father; Derived Son; Son.func(); cout << "Compiled successfully" << endl; return 0; }
I am in derived Son! Compiled successfully
- 定义
override
之后,会发生错误
Code:
Output:#include <iostream> using namespace std; class Base { public: // user wants to override this in // the derived class virtual void func() { cout << "I am in father!" << endl; } }; class Derived : public Base { public: // 添加一个参数重写该函数 void func(int a) override { cout << "I am in derived son!" << endl; } }; int main() { Base Father; Derived Son; Son.func(); cout << "Compiled successfully" << endl; return 0; }
error: 'void derived::func(int)' marked 'override', but does not override void func(int a) override