C++ 重载、重写、隐藏的区别

//联系人:石虎 QQ:1224614774 昵称:嗡嘛呢叭咪哄

一、概念



1.Overload(重载):

 在C++程序中,可以将语义、功能相似的几个函数用同一个名字表示,但参数或返回值不同(包括类型、顺序不同),即函数重载。

1)相同的范围(在同一个类中);

2)函数名字相同;

3)参数不同;

4virtual 关键字可有可无


2.Override(覆盖):是指派生类函数覆盖基类函数,特征是:

 (1)不同的范围(分别位于派生类与基类);

 (2)函数名字相同;

 (3)参数相同;

 (4)基类函数必须有virtual 关键字


  注:重写基类虚函数的时候,会自动转换这个函数为virtual函数,不管有没有加virtual,因此重写的时候不加virtual也是可以的,不过为了易读性,还是加上比较好



3.Overwrite(重写):隐藏,是指派生类的函数屏蔽了与其同名的基类函数,规则如下:

 (1)如果派生类的函数与基类的函数同名,但是参数不同。此时,不论有无virtual关键字,基类的函数将被隐藏(注意别与重载混淆)。

 (2)如果派生类的函数与基类的函数同名,并且参数也相同,但是基类函数没有virtual关键字。此时,基类的函数被隐藏(注意别与覆盖混淆)。


谢谢!!!

猜你喜欢

转载自blog.csdn.net/shihuboke/article/details/79335144
今日推荐