`
如若_晴
  • 浏览: 111136 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

Overload Overwrite Override 的区别

阅读更多
C++:

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

Override(覆盖):是指派生类函数覆盖基类函数,特征是:
(1)不同的范围(分别位于派生类与基类);
(2)函数名字相同;
(3)参数相同;
(4)基类函数必须有virtual 关键字。

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

特别注意

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

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


转自:http://blog.csdn.net/colinchan/archive/2009/08/27/4489073.aspx
分享到:
评论

相关推荐

    Override,Overload,Overwrite的区别---马克-to-win Java视频

    Override Overload Overwrite 马克-to-win Java视频

    C++中overload,override,overwrite的区别详细解析

    在C++编程语言中,`overload`(重载)、`override`(覆盖)和`overwrite`(重写)是三个关键的概念,它们都涉及到函数的多态性,但各有其特定的含义和规则。接下来,我们将深入探讨这三个概念的区别。 **1. ...

    一线大厂百度面试题.zip

    3.1.0 在函数内定义一个字符数组, 用 gets 函数输入字符串的时候, 如果输入越界, 为什么 程序会崩溃? 3.1.1 C++中引用与指针的区别 3.1.2 C/C++程序的内存分区 ...3.2.8 overload 、override 、overwrite 的介绍?

    程序员大厂面试百度篇.pdf

    * overload、override、overwrite的介绍(C++中的函数重载和重写) 7. 海量数据处理: * 海量日志数据,提取出某日访问百度次数最多的那个IP(大数据处理) * 有10个文件,每个文件1G,每个文件的每一行都存放的...

    C++题目汇总终稿 701

    28. **C++中overload, override, overwrite的区别**: overload是函数或运算符在同一作用域内的重载,不同参数列表;override是子类函数重写父类虚函数;overwrite常误用,实际上在C++中没有这个术语。 29. **C++...

    大厂面试系列二.pdf

    overload、override和overwrite的区别在于,overload是重载,指在同一个作用域内,函数名相同但参数列表不同的函数;override是重写,指派生类中重写基类的方法;overwrite是覆盖,通常指文本上的覆盖,与编程概念不...

    面向对象技术-0.pdf

    重载(overload)、重写(override)和改写(overwrite)** - **重载(overload)**: 同一个类中多个同名方法,但参数列表不同。 - **重写(override)**: 子类中定义一个和父类完全相同的方法,以覆盖父类的行为。 - **改写...

    C++题目汇总终稿 70.pdf

    ### C++中overload, override, overwrite的区别 - **overload**:在同一作用域内,函数名相同但参数列表不同。 - **override**:在派生类中重写基类的虚函数。 - **overwrite**:并非C++术语,通常用来指代`...

    C++背题大纲1

    C和C++的主要区别在于C++支持面向对象编程,包括类、继承、多态等特性,而C语言更偏向于过程式编程。函数调用原理涉及到参数传递、调用约定和返回值优化(如RVO和NRVO),这些都是C++编译器优化的一部分。 理解并...

    ACE开发指南(初级).

    - **Override/Overwrite**:覆盖。 - **Overload**:重载。 #### 2. ACE简介及环境搭建 ##### 2.1 ACE简介 ACE (Adaptive Communication Environment) 是一个跨平台的C++框架,用于快速开发高性能、实时的应用程序...

    Java领域基础部分JavaSE笔记

    - **实现**:使用`@Override`注解以确保正确重写。 ##### 7.8 Object类 - **定义**:所有类的根父类。 - **方法**:`toString()`, `equals()`, `hashCode()`等。 #### 八、异常处理 ##### 10.1 异常体系图 - **...

Global site tag (gtag.js) - Google Analytics