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 关键字。此时,基类的函数被隐藏(注意别与覆盖混淆)

  • 相关阅读:
    利用Expression实现DbReader到对象属性的绑定
    致多年后第一次更新
    阿拉伯数字转换成中文大写
    Android程序的入口点是什么,不是Main()吗
    imageButton 和button的区别
    对象和引用的区别
    hdu 4455 Substrings
    Running Rabbits
    ZOJ Problem Set
    几乎就是并查集 (Almost Union-Find,UVa 11987)
  • 原文地址:https://www.cnblogs.com/raichen/p/5693832.html
Copyright © 2011-2022 走看看