C++中的 "override"

简介

本章节主要介绍在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用于直接明了的告诉编译器该函数用于重载父类的某个虚函数
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,839评论 18 399
  • importUIKit classViewController:UITabBarController{ enumD...
    明哥_Young阅读 3,971评论 1 10
  • 2014年的苹果全球开发者大会(WWDC),当Craig Federighi向全世界宣布“We have new ...
    yeshenlong520阅读 2,338评论 0 9
  • 此刻,我坐在回家的车上,写下这些文字,手心发热,心里暖暖的。 工作性质的关系,我们一般春节放假都挺早的,每次都是分...
    原圆阅读 157评论 0 2
  • 时间是一个人最稀缺的资源。 如何过一天就是如何过一生。 生命的价值不在于我们活了多少天,而在于我们如何使用这些日子...
    宸溪阅读 1,198评论 0 1