c++ override

1、公有继承
公有继承包含两部分,一是函数接口,二是函数实现
1.1 纯虚函数
纯虚函数,继承的是基类中成员函数的接口且要在派生类中重写成员函数的实现
要调用基类的成员函数,须加类作用域操作符::
1.2 普通虚函数
虚函数会在基类中,定义一个缺省的实现,表示继承的是基类成员函数接口和缺省实现,由派生类选择是否重写该函数。
实际上,允许虚函数同时继承接口和缺省实现是危险的。最好是基类实现缺省行为,但只有在派生类要求时才提供该缺省行为
方法一
纯虚函数+缺省实现,因为是纯虚函数所以只有接口被继承,其缺省的实现不会被继承。派生类要想使用该缺省的实现,必须显式地调用
方法二
C++11中使用关键字override,可以避免这样的不小心

override
可以避免派生类中忘记重写虚函数的错误
在派生类中,override继承自基类成员函数的实现,要满足:
基类中,成员函数声明为virtual
基类和派生类中,成员函数的返回类型和异常规格必须兼容
基类和派生类中,成员函数名、形参类型、常量属性和引用限定符必须完全相同
override关键字可以显示地在派生类中声明,哪些成员函数需要被重写,如果没被重写,则编译器会报错。
这样即使不小心漏写了虚函数重写的某个苛刻条件,也可以通过编译器的报错,快速改正错误

发布了64 篇原创文章 · 获赞 6 · 访问量 6900

猜你喜欢

转载自blog.csdn.net/qq_23929673/article/details/94734938
今日推荐