C++中override和final
时间: 2023-12-10 12:02:41 浏览: 92
在C++中,`override`和`final`是两个关键字,用于控制类的继承和虚函数的重写。
`override`关键字用于明确地指定一个虚函数是覆盖了基类中的虚函数。如果一个函数使用了`override`关键字,则编译器会检查该函数是否确实覆盖了基类中的虚函数,如果没有,则会报编译错误。
例如:
```cpp
class Base {
public:
virtual void foo() {}
};
class Derived : public Base {
public:
void foo() override {}
};
```
在上面的代码中,`Derived`类中的`foo()`函数被标记为`override`,因此编译器会检查它是否确实覆盖了基类`Base`中的`foo()`函数。
`final`关键字用于禁止派生类重写虚函数,或者禁止派生类继承该类。如果一个类或函数使用了`final`关键字,则其派生类不能再重写该类或函数。例如:
```cpp
class Base {
public:
virtual void foo() final {}
};
class Derived : public Base {
public:
// 下面的代码会导致编译错误,因为foo()被标记为final,不能被重写
// void foo() {}
};
```
在上面的代码中,`Base`类中的`foo()`函数被标记为`final`,因此其派生类`Derived`不能再重写该函数。如果`Derived`类中尝试重写`foo()`函数,编译器会报错。
阅读全文