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

  • 相关阅读:
    Js中的变量
    flash读取XML 背景自动适应大小
    Ajax.NET Professional
    JS事件大全
    (转)SharePoint社区工具包中文版发布!!
    .iOS APP Project or Mac APP Project编译错误提示: My Mac 64bit is not valid for Running the scheme
    NSAssert断言
    iphone手机appstore地区更改
    自定义UITableView Section 的title样式字体
    从项中复制值
  • 原文地址:https://www.cnblogs.com/raichen/p/5693832.html
Copyright © 2011-2022 走看看