zoukankan      html  css  js  c++  java
  • 重写 覆盖 final override

    一、概念

    目前理解这个概念只在类继承中出现;当在作用域嵌套中,应该也会出现重写的概念,比如内部命名空间重写了外部命名空间中的函数;

    二、阻止类被继承(关键字final)

    1、形式一

    class NoDerived final { /* */ };  //NoDerived不能作为基类

    2、形式二

    class Last final : Base { /*  */ }; //Last不能作为基类

    三、阻止覆盖函数(关键字final;注意:这里并非虚函数)

    struct D2 : B {
        //从B继承f2()和f3(),覆盖f1(int)
        void f1(int) const final; //不允许后续的其他类覆盖f1(int)
    };
    struct D3 : D2 {
        void f2();
        void f1(int) const; // 错误
    };

    三、强制覆盖子类虚函数(关键字override)

    struct B {
        virtual void f1(int) const;
        virtual void f2();
        void f3();
    };
    struct D1 : B {
        void f1(int) const override;
        void f2(int) override;    //错误:B没有形如f2(int)的函数
        void f3() override;    //错误:f3不是虚函数
        void f4() override;    //错误:B没有名为f4的函数
    };
  • 相关阅读:
    Unity中 mesh生成斜坡
    设计模式
    Go语言高级编程
    Go语言高级编程
    agentzh 的 Nginx 教程(版本 2020.03.19)
    ubuntu18安装mysql5.7并配置远程连接
    创建图库
    交点修改
    显示中文
    浅谈前端水印
  • 原文地址:https://www.cnblogs.com/wllwqdeai/p/13612902.html
Copyright © 2011-2022 走看看