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等技术内容,立即学习

相关文章
|
23天前
|
存储 安全 编译器
【C++专栏】C++入门 | auto关键字、范围for、指针空值nullptr
【C++专栏】C++入门 | auto关键字、范围for、指针空值nullptr
27 0
|
1天前
|
程序员 C++
为什么c++要引入class关键字
总之,C++引入 `class`关键字是为了支持面向对象编程,通过封装、继承、多态和抽象等特性,提供了更强大、灵活和可维护的编程工具,使得程序开发更加高效和可扩展。这使C++成为一种强大的编程语言,广泛用于各种应用领域。
6 1
|
4天前
|
C语言 C++
【C++入门】关键字、命名空间以及输入输出
【C++入门】关键字、命名空间以及输入输出
|
23天前
|
C++
|
24天前
|
存储 编译器 Linux
【C++】C++入门第二课(函数重载 | 引用 | 内联函数 | auto关键字 | 指针空值nullptr)
【C++】C++入门第二课(函数重载 | 引用 | 内联函数 | auto关键字 | 指针空值nullptr)
|
1天前
|
编译器 C++
【C++】一文全解四种经典 [ 特殊类 ]的设计
【C++】一文全解四种经典 [ 特殊类 ]的设计
|
2天前
|
编译器 C语言 C++
c++初阶------类和对象(六大默认构造函数的揭破)-3
c++初阶------类和对象(六大默认构造函数的揭破)
|
2天前
|
编译器 C语言 C++
c++初阶------类和对象(六大默认构造函数的揭破)-2
c++初阶------类和对象(六大默认构造函数的揭破)
|
2天前
|
存储 编译器 C语言
c++初阶------类和对象(六大默认构造函数的揭破)-1
c++初阶------类和对象(六大默认构造函数的揭破)
|
2天前
|
存储 编译器 C语言
c++初阶-------类和对象-2
c++初阶-------类和对象