c++11 关键字 override 与 final

简介: c++11 关键字 override 与 final

c++11 中 override 与 final

  • 重点:为什么 c++11 要引入这两个关键字?
  • 为了解决什么原来所不能解决的什么问题?
  • 具体怎么使用,以及怎么解决的相关问题?
  • 重载(overload)、重写(override,有的书也叫做“覆盖”)、隐藏(重定义)(redefinition)的区别?

搞清楚重载、重写、隐藏

这里简单区分出其区别,搞懂这个是理解引入overridefinal关键字的关键!

override

  • 指定子类一个虚函数复写基类的一个虚函数;
  • 保证该重写的虚函数与基类的虚函数具有相同的签名。
  • 所谓的签名:返回值类型、函数名、参数、特殊关键字。
class A {
public:
    virtual void Func() {};
};
class B : public A {  
public:
    virtual void Func() override {};  //保证该重写的虚函数与基类的虚函数具有相同的签名
};

final

  • 指定某个虚函数不能再派生中被覆盖,或者某个类不能被派生;
  • 阻塞类进一步派生;
  • 阻塞虚函数进一步重写。
class A {
public:
    virtual void Func() {};
};
class B final: public A {   //阻塞类进一步派生
public:
    virtual void Func() final {};  //阻塞虚函数进一步重写
};
class C : public B {   //报错
public:
    virtual void Func() final {};
};

充电站

推荐一个零声学院免费公开课程,个人觉得老师讲得不错,分享给大家:Linux,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK等技术内容,立即学习

相关文章
|
4月前
|
存储 安全 编译器
【C++入门 四】学习C++内联函数 | auto关键字 | 基于范围的for循环(C++11) | 指针空值nullptr(C++11)
【C++入门 四】学习C++内联函数 | auto关键字 | 基于范围的for循环(C++11) | 指针空值nullptr(C++11)
|
5月前
|
存储 安全 编译器
【C++航海王:追寻罗杰的编程之路】引用、内联、auto关键字、基于范围的for、指针空值nullptr
【C++航海王:追寻罗杰的编程之路】引用、内联、auto关键字、基于范围的for、指针空值nullptr
65 5
|
4月前
|
存储 编译器 C++
C++从遗忘到入门问题之float、double 和 long double 之间的主要区别是什么
C++从遗忘到入门问题之float、double 和 long double 之间的主要区别是什么
|
5月前
|
Unix 编译器 C语言
【C++航海王:追寻罗杰的编程之路】关键字、命名空间、输入输出、缺省、重载汇总
【C++航海王:追寻罗杰的编程之路】关键字、命名空间、输入输出、缺省、重载汇总
26 0
|
5月前
|
存储 安全 编译器
【C++】:函数重载,引用,内联函数,auto关键字,基于范围的for循环,nullptr关键字
【C++】:函数重载,引用,内联函数,auto关键字,基于范围的for循环,nullptr关键字
35 0
|
21天前
|
存储 编译器 对象存储
【C++打怪之路Lv5】-- 类和对象(下)
【C++打怪之路Lv5】-- 类和对象(下)
21 4
|
21天前
|
编译器 C语言 C++
【C++打怪之路Lv4】-- 类和对象(中)
【C++打怪之路Lv4】-- 类和对象(中)
19 4
|
21天前
|
存储 安全 C++
【C++打怪之路Lv8】-- string类
【C++打怪之路Lv8】-- string类
17 1
|
1月前
|
存储 编译器 C++
【C++类和对象(下)】——我与C++的不解之缘(五)
【C++类和对象(下)】——我与C++的不解之缘(五)
|
1月前
|
编译器 C++
【C++类和对象(中)】—— 我与C++的不解之缘(四)
【C++类和对象(中)】—— 我与C++的不解之缘(四)