C++里override含义
时间: 2023-07-13 17:26:09 浏览: 104
在 C++11 中,`override` 是一种关键字,用于显式地指示函数是覆盖了基类中的虚函数。
在 C++ 中,当一个类继承了一个包含虚函数的基类时,如果派生类中的函数与基类中的虚函数具有相同的名称、参数列表和常量性,那么派生类中的函数就会覆盖(override)基类中的虚函数,形成了一个新的虚函数。这样,当通过基类指针或引用调用虚函数时,实际上会调用派生类中的函数。
使用 `override` 关键字可以显式地声明一个函数是覆盖了基类中的虚函数,以便在编译时进行检查,避免因函数签名不匹配而导致的错误。如果使用了 `override` 关键字但实际上并没有覆盖基类中的虚函数,编译器就会报错。
下面是一个使用 `override` 关键字的示例代码:
```cpp
class Base {
public:
virtual void foo() const {
std::cout << "Base::foo()" << std::endl;
}
};
class Derived : public Base {
public:
void foo() const override {
std::cout << "Derived::foo()" << std::endl;
}
};
int main() {
Derived d;
Base& b = d;
b.foo(); // 调用 Derived::foo()
return 0;
}
```
在上面的代码中,`Derived` 类继承自 `Base` 类,并覆盖了其虚函数 `foo()`。在 `Derived` 类中,我们使用 `override` 关键字来显式地声明 `foo()` 函数是覆盖了 `Base` 类中的虚函数。在 `main()` 函数中,我们通过基类指针调用虚函数 `foo()`,实际上会调用 `Derived` 类中的函数,输出结果为 `Derived::foo()`。
需要注意的是,`override` 关键字只能用于虚函数的覆盖,不能用于普通成员函数的重载。另外,在 C++11 之前,可以使用 `virtual` 关键字来声明一个函数是虚函数,但是在 C++11 中,使用 `override` 更加明确和可读性更好。
阅读全文