• C++ override关键字


    转自:https://blog.csdn.net/fanyun_01/article/details/79122136

    1.介绍 

    在派生类中,重写 (override) 继承自基类成员函数的实现 (implementation) 时,要满足如下条件:

    • 一虚:基类中,成员函数声明为虚拟的 (virtual)
    • 二容:基类和派生类中,成员函数的返回类型和异常规格 (exception specification) 必须兼容
    • 四同:基类和派生类中,成员函数名、形参类型、常量属性 (constness) 和 引用限定符 (reference qualifier) 必须完全相同

    如此多的限制条件,导致了虚函数重写如上述代码,极容易因为一个不小心而出错。C++11 中的 override 关键字,可以显式的在派生类中声明,哪些成员函数需要被重写,如果没被重写,则编译器会报错。

    #include <iostream>
    using namespace std;
    class Base {
    public:
        virtual void fun1() const;
        virtual void fun2(int x);
        virtual void fun3() &;
        void fun4() const;    // is not declared virtual in Base
    };
     
    class Derived: public Base {
    public:
        virtual void fun1() override;
        virtual void fun2(unsigned int x) override;
        virtual void fun3() && override;
        virtual void fun4() const override;
    };

    编译时会报错:

    error: ‘virtual void Derived::fun1()’ marked ‘override’, but does not override
         virtual void fun1() override;

    借助编译器检查该重写的方法是否重写了。

  • 相关阅读:
    算法题-数组算法题
    Linux-shell脚本的调试和追踪
    Linux-循环loop
    Linux-条件判断式
    Linux-第一行#!/bin/bash的含义
    Linux-排序命令:sort、wc、uniq
    Linux-选取命令:cut grep
    Linux-shell变量
    Linux-重定向、追加、tee
    Linux三剑客-sed编辑文本
  • 原文地址:https://www.cnblogs.com/BlueBlueSea/p/16826787.html
Copyright © 2020-2023  润新知