博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++:overload, override和overwrite
阅读量:4109 次
发布时间:2019-05-25

本文共 654 字,大约阅读时间需要 2 分钟。

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

(1)相同的范围(在同一个类中);
(2)函数名字相同;
(3)参数不同;
(4)virtual 关键字可有可无。

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

(1)不同的范围(分别位于派生类与基类);
(2)函数名字相同;
(3)参数相同;
(4)基类函数必须有virtual 关键字。

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

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

[特别注意]

如果基类有某个函数的多个重载(overload)版本,而你在子类中重写(overwrite)了其中的一个,或是子类添加新的函数版本,则所有基类的重载版本都被遮蔽。所以,正常情况下,在子类中应重写基类中的所有重载版本。

具体地讲,继承类中的重载和重写都包含了重写的涵义,即只要函数名一样,基类的函数版本就会被遮蔽,所以,在派生类中要保持基类的重载版本,就应该重写所有基类的重载版本。重载只在当前类中有效,继承会失去重载的特性。也就是说,把基类的重载函数放在继承类里,就必须重写。

转自:

转载地址:http://bvtsi.baihongyu.com/

你可能感兴趣的文章
python: extend (扩展) 与 append (追加) 的差别
查看>>
「译」在 python 中,如果 x 是 list,为什么 x += "ha" 可以运行,而 x = x + "ha" 却抛出异常呢?...
查看>>
谷歌阅读器将于2013年7月1日停止服务,博客订阅转移到邮箱
查看>>
浅谈JavaScript的语言特性
查看>>
Hid Report Descriptor
查看>>
strlen,strcpy,strcat,strcmp,strstr各代表什么意思
查看>>
手机GPRS、短信等设置
查看>>
结构体声明
查看>>
SIM300 AT指令集
查看>>
lwIP移植工作
查看>>
USB 协议简介
查看>>
USB入门系列之一----基础知识
查看>>
USB入门系列之二-----USB的连接模型
查看>>
USB入门系列之三-----USB的电气特性
查看>>
USB入门系列之四 —— USB的线缆以及插头、插座【转】
查看>>
USB入门系列之五 —— USB设备的插入检测机制
查看>>
USB入门系列之六 —— USB设备的枚举过程
查看>>
USB入门系列之七 —— USB的描述符及各种描述符之间的依赖关系【转】
查看>>
LwIP移植心得[转]
查看>>
LWIP ethernetif.c分析
查看>>