zoukankan      html  css  js  c++  java
  • 关键字final和override

    final关键字

    限制某个类或结构体不能被继承

    直接对类声明:

    class A final{};
    class B : public A {};

    或这类内有final函数,类可以被继承,但是final函数不能被覆盖,注意final函数必须是虚函数

    class A
    {
        virtual int fun() final {}
    };
    class B : public A 
    {
        int fun(){}
    };

    override关键字

     如果子类函数想要覆盖基类函数可以加上override关键字来检查基类是否有此方法,如果不加编译器是检查不出来的

    1 class A
    2 {
    3     virtual int fun(double){}
    4 };
    5 class B : public A 
    6 {
    7     int fun(double) override {}
    8     int fun(int) override {}    //“override”的方法没有重写任何基类方法
    9 };

    a.成员函数被重载的特征:
    (1)相同的范围(在同一个类中)
    (2)函数名字相同
    (3)参数不同
    (4)virtual 关键字可有可无
    b.覆盖是指派生类函数覆盖基类函数,特征是:
    (1)不同的范围(分别位于派生类与基类)
    (2)函数名字相同
    (3)参数相同
    (4)基类函数必须有virtual 关键字
    c.“隐藏”是指派生类的函数屏蔽了与其同名的基类函数,规则如下:
    (1)如果派生类的函数与基类的函数同名,但是参数不同。此时,不论有无virtual关键字,基类的函数将被隐藏(注意别与重载混淆)
    (2)如果派生类的函数与基类的函数同名,并且参数也相同,但是基类函数没有virtual 关键字。此时,基类的函数被隐藏(注意别与覆盖混淆)

  • 相关阅读:
    Oracle死锁
    Oracle forall bulk collect批量数据更新
    Oracle组合索引与回表
    查看Oracle执行计划
    Oracle 用户、角色、权限(系统权限、对象权限)的数据字典表
    Oracle计算两个时间戳相差秒数,精确到毫秒
    关于Oracle的疑问
    Oracle update和order by
    Oracle Connect by与递归with
    关于Oracle表连接
  • 原文地址:https://www.cnblogs.com/raichen/p/5693832.html
Copyright © 2011-2022 走看看