C++:override和final
来源:互联网 发布:dnf游戏数据异常严重吗 编辑:程序博客网 时间:2024/05/19 10:16
1. override 重载
当你在父类中使用了虚函数时候,你可能需要在某个子类中对这个虚函数进行重写,以下方法都可以:
class A{ virtual void foo();}class B :public A{ void foo(); //OK virtual foo(); // OK void foo() override; //OK}
如果不使用override,当你手一抖,将foo()写成了f00()会怎么样呢?结果是编译器并不会报错,因为它并不知道你的目的是重写虚函数,而是把它当成了新的函数。如果这个虚函数很重要的话,那就会对整个程序不利。
所以,override的作用就出来了,它指定了子类的这个虚函数是重写的父类的,如果你名字不小心打错了的话,编译器是不会编译通过的:
class A{ virtual void foo();};class B :A{ virtual void f00(); //OK virtual void f0o()override; //Error };
为了减少程序的运行时错误,还是养成重写虚函数加上override的习惯吧。
2.final
当不希望某个类被继承,或不希望某个虚函数被重写,可以在类名和虚函数后添加final关键字,添加final关键字后被继承或重写,编译器会报错。例子如下:
class Base{ virtual void foo();}; class A : Base{ void foo() final; // foo 被override并且是最后一个override,在其子类中不可以重写 void bar() final; // Error: 父类中没有 bar虚函数可以被重写或final};class B final : A // 指明B是不可以被继承的{ void foo() override; // Error: 在A中已经被final了}; class C : B // Error: B is final{};
阅读全文
0 0
- C++:override和final
- Override和final
- final和override的用法
- C++11 override 和 final
- C++ final 和 override 说明符
- C++11 override 和 final
- C++11 特性:显式 override 和 final
- ## C++11中 final 和 override 说明符
- c++11学习 override 和 final 关键字
- c++11之override和final
- swift override和final的用法浅谈
- virtual和override(C#)
- C++:overload, override和overwrite
- C++11 新特性:显式 override 和 final
- C++11 新特性:显式 override 和 final
- c++11特性之override和final关键字
- C++11 新特性:显式 override 和 final
- C++11特性之override和final关键字
- C++:虚函数
- 小练习:补数 (Number Complement)
- 小练习:Two Sum
- C++:创建线程初试
- 小练习:vaild number
- C++:override和final
- 如何编写静态库
- 根据数据库查询返回值,返回时间段
- C++:类和对象
- 函数指针
- main函数的参数:argc和argv
- mac osx Apache 服务器架设
- C++:栈(stack)的模板类实现
- 校园地图