首页 > 其他分享 >final和override

final和override

时间:2023-02-20 15:03:49浏览次数:35  
标签:void virtual class override foo final

override:

  • 当在父类中使用了虚函数时候,你可能需要在某个子类中对这个虚函数进行重写,以下方法都可以:
class A
{
    virtual void foo();
}
class B : public A
{
    void foo(); //OK
    virtual void foo(); // OK
    void foo() override; //OK
}
  • 不使用override,当你手一抖,将foo()写成了f00()会怎么样呢?结果是编译器并不会报错,因为它并不知道你的目的是重写虚函数,而是把它当成了新的函数。
  • override指定了子类的这个虚函数是重写的父类的,如果你名字不小心打错了的话,编译器是不会编译通过的。
  • 加了override之后,这个函数一定是继承自A的,A找不到就报错
class A
{
    virtual void foo();
};
class B : public A
{
    virtual void f00(); //OK,这个函数是B新增的,不是继承的
    virtual void f0o() override; //Error, 加了override之后,这个函数一定是继承自A的,A找不到就报错
};

final:
-当不希望某个类被继承,或不希望某个虚函数被重写,可以在类名和虚函数后添加final关键字,添加final关键字后被继承或重写,编译器会报错。

class Base
{
    virtual void foo();
};
 
class A : public Base
{
    void foo() final; // foo 被override并且是最后一个override,在其子类中不可以重写
};

class B final : A // 指明B是不可以被继承的
{
    void foo() override; // Error: 在A中已经被final了
};
 
class C : B // Error: B is final
{
};

标签:void,virtual,class,override,foo,final
From: https://www.cnblogs.com/xiaoqing-ing/p/17137451.html

相关文章

  • try...catch中finally子句的使用
    目录:finally的使用finally面试题final、finally、finalize的区别finally子句的使用:1、在finally子句中的代码是最后且一定会执行的,即使try语句块中的代码出现异常2......
  • 49-final关键字
    final可以修饰类、属性、方法和局部变量在某些情况下,程序员会使用到final:1)当不希望类被继承时,可以用final修饰2)当不希望父类的某个方法被子类覆盖/重写(override)时......
  • Linux远程工具FinalShell
    FinalShell是一体化的的服务器,网络管理软件,不仅是ssh客户端,还是功能强大的开发,运维工具,充分满足开发,运维需求.特色功能:云端同步,免费海外服务器远程桌面加速,ssh加......
  • 控制不能离开Finally子句主体
    1。在try{}catch{}finally{}的结构中不可以将返回语句放置在finally的主体当中2.如果在catch{}中有向上一级从新抛出异常操作,在finally{}之后的语句将不会执行3.如果在ca......
  • Codeforces Round #850 (Div. 2, based on VK Cup 2022 - Final Round)(B,D)
    CodeforcesRound#850(Div.2,basedonVKCup2022-FinalRound)(B,D)这场真是太难了,\(C\)都做出了,\(B\)还做不出太烦了B最讨厌什么给出数组,要每一个数移动来符合......
  • Codeforces Round #850 (Div. 2, based on VK Cup 2022 - Final Round)
    题目链接\(A_1\)核心思路不要傻乎乎的模拟先观察性质。(2,3)(4,5)(6,7)(8,9).我们可以发现a的模4都是大于1的,b的都是小于。发现这个性质之后就可以写代码了。//P......
  • 2.7 vp Codeforces Round #850 (Div. 2, based on VK Cup 2022 - Final Round)
    A1-Non-alternatingDeck(easyversion)题意给出一个数字n,两个人轮流玩游戏从n中拿数,第一个人首先拿1,第二个人拿2,3,第一个人拿1...循环往复,直到数字全被拿完思路模......
  • 日常学习:override、verdi
    override不可重载的部分由于一些原因。变量引用本身依赖于一个路径,这个路径不可变更,因此,使用以下方法获取子类的变量:https://bbs.eetop.cn/forum.php?mod=viewthread&tid......
  • Codeforces Round #850 (Div. 2, based on VK Cup 2022 - Final Round) D-F
    D题解题思路本质上就是个贪心,因为比较简单所以不多写,在代码实现上注意利用stlvec.back()//返回尾部的值vec.pop_back()//弹出尾部(next_permutation(vec.begin(),vec......
  • final关键字--Java基础052
    /*final(最终、修饰符)final关键字的用法:1.final关键字修饰一个基本类型的变量时,该变量不能重新赋值,第一次的值为最终的。2.fianl关键字修饰一个引用类型变量时,该......