c++中的final与override

final关键字


  1. c++中的final关键字主要有两个用途:

    1. 用于类:告诉编译器该类不可被其他类继承,如:

      class End final{ ...... };
      

      则其他类再继承End时编译器将会报错

    2. 用于虚函数或纯虚函数的重写:告诉编译器该虚函数的重写到此结束,之后以该类为基类的类将禁止对该函数再进行重写(定义完全一致的函数会报错,定义符合重载的同名函数会遵行同名访问原则),如:

      class base { 
      public: 
          virtual void show_something() = 0; };
      class derive : public base { 
      public : 
          void show_something() final { 
              cout << hello << endl;
          }
      };
      class derive2 : public derive {
      public : 
          void show_something() { ... }       //error,can not be overrided
      void show_something(int i) { ... }  //pass, but derive::show will be hided
      };
      

override关键字


  1. 用于成员函数后显示声明该函数是对基类虚函数或纯虚函数的重写,主要用于防止程序员在重写基类虚函数时手误导致的逻辑错误,而带有override的函数当编译器发现其与基类中的虚函数不一致时会报错,如:

    class base { 
    public: 
        virtual void show_something() = 0; 
    };
    class derive : public base {
    public: 
        void show_someting() override {......}  	//报错,注意是someting少了h
    };
    

:override所放位置与常成员函数的const位置一致,当重写函数恰好也是常函数时,override需要放在const后面,否则将会报错,当override与final结合使用时表示显示说明该函数是重写并且是最后一个重写,至于二者的先后顺序没有影响,但如果有const则都需要放在const后面(实际上使用final时就已经告诉编译器该函数是重写了,没有必要在使用override)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值