1.介绍
override是C++11引入的特性,用于显式地表明派生类中的成员函数是重写基类中的虚函数。旨在提高代码的可读性和安全性,避免因函数签名不匹配而导致的错误。
为什么引入override?
在没有override的情况下,如果派生类中的函数签名与基类的虚函数不匹配(例如参数类型或数量不同),编译器会将其视为一个新的函数,而不是重写基类的虚函数。这种情况下可能导致难以发现的错误。override关键字的引入解决了这个问题:
(1)显式表明意图:明确告诉编译器这是个重写函数。
(2)编译时检查:如果函数签名与基类的虚函数不匹配,编译器会报错。
2.使用语法
在派生类中重写基类的虚函数时,在函数声明后加上override关键字,如下所示。
class Base {
public:
virtual void func(int x) {
std::cout << "Base::func(int)" << std::endl;
}
};
class Derived : public Base {
public:
void func(int x) override { // 显式重写基类的虚函数
std::cout << "Derived::func(int)" << std::endl;
}
};
3.override的优点
(1)避免错误:如果派生类的函数签名与基类虚函数不符,编译器会报错。
(2)提高代码可读性:明确表名派生类中的函数是重写基类的虚函数,便于理解与维护。
(3)增强代码安全性:防止因拼写错误或参数不匹配导致的意外行为。
4.总结
-
override用于显式表明派生类重写基类的虚函数。
-
提高了代码的可读性和安全性,避免因函数签名不匹配而导致的错误。
-
在 C++11 及更高版本中,推荐在重写虚函数时使用override关键字。
-
结合final(后续介绍)关键字,可以进一步控制类的继承和虚函数的重写行为。
如有错误,敬请指正!!!