简介
本章节主要介绍在C++中override
关键字的主要作用。在阅读本章节前,需要
先理解C++中的虚函数.
例程
- 成员函数为虚函数
我们的意图是在子类Derived1
与Derived2
分别重载父类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
用于直接明了的告诉编译器该函数用于重载父类的某个虚函数
网友评论