美文网首页C++C++
C++中的 "override"

C++中的 "override"

作者: Kai_Z | 来源:发表于2018-07-05 18:15 被阅读19次

    简介

    本章节主要介绍在C++中override关键字的主要作用。在阅读本章节前,需要
    先理解C++中的虚函数.

    例程

    • 成员函数为虚函数
      我们的意图是在子类Derived1Derived2分别重载父类Base::print(void),
      在我们下面的代码中有没有发现什么问题呢?
    class Base {
    public:
        virtual void print(void){...}
    };
    class Derived1 : public Base {
    public:
        void print(void){...}
    };
    class Derived2 : public Base {
    public:
        void Print(void){...}
    };
    

    额...,原来因为不小心,在Derived2中将print误输入为Print,(注意其中的字母p的大小写),关键问题是编译器完全可以正确的编译上面的代码,这是一个很难发现的错误。

    问题来了: 如何简单直接的向编译器表明意图,我就是要重载Base::print(void)呢?如果我写错了字母,你(指代编译器)要直接告诉我错误,或者一个警告也行?

    答: override关键字可以做这件事情。

    代码修改如下:

    class Base {
    public:
        virtual void print(void){...}
    };
    class Derived1 : public Base {
    public:
        void print(void) override {...}
    };
    class Derived2 : public Base {
    public:
        void Print(void) override {...}
    };
    

    当编译器看到上面代码的时候就开始很不爽了,编译器开始抱怨了,你通过 "override" 告诉我 "Derived2::Print(void)是要重载父类的某个函数,可是我根本没有在父类中找到 "Print(void)"函数,编译器直接丢出个错误,然后甩膀子不干了
    你知道的,编译器都是很娇贵的,当他甩脸色的时候,你也只能乖乖的仔细看他给你的错误,哦,原来是不小心写错字母了,一切就这么完美的解决了。

    总结

    • override用于直接明了的告诉编译器该函数用于重载父类的某个虚函数

    相关文章

      网友评论

        本文标题:C++中的 "override"

        本文链接:https://www.haomeiwen.com/subject/illqeftx.html