关于C加加11的override作用,请详细说明
时间: 2023-11-28 22:47:34 浏览: 96
详谈c++11 final与override说明符
在 C++11 中,override 是一个函数重载说明符,它的作用是告诉编译器,该函数是被重载(override)的虚函数,而不是普通函数。
具体来说,当一个类继承自另一个类时,如果子类中的函数与父类中的虚函数具有相同的函数签名(即函数名、参数列表和 const/volatile 限定符),那么子类的函数将会重载(override)父类的虚函数。但是,如果子类的函数签名与父类的虚函数不匹配,那么子类的函数将不会重载父类的虚函数,而是定义了一个新的函数。
这时候就需要使用 override 关键字来显式地声明子类的函数是一个重载(override)父类的虚函数,从而避免出现不匹配的情况。如果子类的函数签名与父类的虚函数不匹配,而又使用了 override 关键字,那么编译器将会报错,从而帮助我们找出错误。
下面是一个使用 override 关键字的示例:
```c++
class Animal {
public:
virtual void talk() const;
};
class Cat : public Animal {
public:
void talk() const override;
};
void Cat::talk() const {
std::cout << "Meow!" << std::endl;
}
```
在这个示例中,Animal 类定义了一个虚函数 talk(),而 Cat 类继承自 Animal 类并重载了 talk() 函数。子类的 talk() 函数与父类的 talk() 函数具有相同的函数签名,因此我们使用 override 关键字来显式地声明子类的函数是一个重载(override)父类的虚函数。如果我们忘记使用 override 关键字,那么编译器将不会报错,但是我们就无法确保子类的函数会重载父类的虚函数了。
阅读全文