c++ 重载,覆盖,重定义

函数重载(Function Overloading)

C++允许同一范围(scope)(在同一个类中)内具有多个名称相同的函数。这些函数成为重载函数(overloaded function)。

C++ 使用函数声明的  参数数量参数类型省略号存在或缺失(Presence or absence of ellipsis),const 或 volatile 来区分同一范围内具有相同名称的函数组。

覆盖(override,重写):

子类重写定义基类中有相同名字相同参数的虚函数。

不同范围内(特指基类派生类)

函数名相同

参数相同

基类函数有virtual关键字修饰

virtual函数是private的,派生类中可重写为public 或者protected。

重定义(redefining,也叫隐藏):

派生类的函数屏蔽了与其同名的基类函数;

a、若派生类的函数与基类的函数名称相同,但参数类表不同,则基类函数被隐藏(不管基类函数有无virtual修饰);

b、若派生类的函数与基类的函数名称相同,参数列表相同,但基类函数无virtual修饰,则基类函数被隐藏。

http://msdn.microsoft.com/zh-cn/library/5dhe1hce.aspx

http://www.cnblogs.com/kevinGaoblog/archive/2012/08/25/2656989.html

http://blog.163.com/[email protected]/blog/static/111352259201102441934870/

时间: 2024-10-13 17:34:50

c++ 重载,覆盖,重定义的相关文章

(转)C++重写、重载和重定义的区别

C++ 重写重载重定义区别 (源自:http://blog.163.com/[email protected]/blog/static/111352259201102441934870/) 1 成员函数重载特征:   a 相同的范围(在同一个类中) b 函数名字相同 c 参数不同 d virtual关键字可有可无 2 重写(覆盖)是指派生类函数覆盖基类函数,特征是: a 不同的范围,分别位于基类和派生类中 b 函数的名字相同 c 参数相同 d 基类函数必须有virtual关键字 3 重定义(隐藏

C++基础6 【继承】 类型兼容 satatic 多继承 虚继承 【多态】 案例 虚析构函数 重载重写重定义

[继承] 继承的访问控制域 图 类型兼容性原则  指针 与 引用 用子类直接初始化父类 类的继承模型示意 图 [继承结论] [非常重要的概念] 继承与组合混搭情况下,构造和析构调用原则 原则:先构造父类,再构造成员变量.最后构造自己 先析构自己,在析构成员变量.最后析构父类 继承中,同名的成员变量的处理办法 继承中,同名的成员函数的处理办法 派生类中的static关键字 如果静态成员变量,你没有使用,也没有初始化的话 编译不会报错 经典错误 : 类中函数默认是private的,无法在外部访问 具

重载重写重定义

1.重载:overload,是指同一可访问区内被声明的几个具有不同参数列表(参数的类型,个数,顺序不同)的同名函数,根据参数列表确定调用哪个函数,重载不关心函数返回类型. class Overload{ public: void V1(int i); void V1(double i); void V1(int i, double j); void V1(double i, int j); int test(int i); //编译报错,不是重载 }; 2.隐藏(重定义):隐藏是指派生类的函数屏

父子类之间,成员函数重写、重载以及重定义的区别

1.重写override:也叫做覆盖.子类重新定义父类中有相同名称和参数列表的虚函数.函数特征相同. 重写需要注意: 1) 被重写的函数不能是static的.必须是virtual的 2) 重写函数必须有相同的类型,名称和参数列表 3) 重写函数的访问修饰符可以不同.尽管virtual是private的,派生类中重写改写为public,protected也是可以的 2.重载overload:是函数名相同,参数列表等特征不同.但是不能靠返回类型来判断. 3.重定义redefining也叫做隐藏: 子

重载,重定义与隐藏

重载:在同一个类中,要求函数名相同,函数参数不同 重定义:在基类与派生类之间,派生类重新定义基类中的函数,且要求函数的名称.参数类型以及返回值类型完全一致.如果基类中的函数为virtual,则通过基类指针指向派生类时,可以实现多态.如果是非virtual,通过基类指针,不论指向的是基类还是派生类,所调用的都是基类的函数:通过派生类指针,调用的则是派生类的函数.(即实际调用的函数由指针的静态类型决定,即指针定义为什么类型,其静态类型就是什么类型) 隐藏:在基类和派生类之间,派生类定义了基类中的同名

类成员函数中重载/重写(覆盖)/重定义(隐藏)的区别

https://blog.csdn.net/ranxiaoxu123/article/details/52291385 https://www.cnblogs.com/renyuan/archive/2013/06/08/3127562.html 原文地址:https://www.cnblogs.com/Kiven5197/p/8934207.html

C++中重载(overload)、重写(override,也叫做“覆盖”)和重定义(redefine)的区别?

1)重载(overload): 指函数名相同,但是它的参数表列个数或顺序,类型不同.但是不能靠返回类型来判断. a 相同的范围(在同一个类中) b 函数名字相同. 参数不同 c virtual关键字可有可无 d 返回值可以不同: 2) 重写(覆盖override)是指派生类函数覆盖基类函数,特征是: a 不同的范围,分别位于基类和派生类中 b 函数的名字相同. 参数相同 c 基类函数必须有virtual关键字,不能有static d 返回值相同(或者协变),否则报错: e 重写函数的访问修饰符可

c++三大概念要分清--重载,隐藏(重定义),覆盖(重写)

重载,隐藏(重定义),覆盖(重写)-这几个名词看着好像很像,不过其实一样都不一样!! 综述: 一.重载: (1)概念:在同一个作用域内:函数名相同,参数列表不同(参数个数不同,或者参数类型不同,或者参数个数和参数类型都不同),返回值类型可相同也可不同:这种情况叫做c++的重载! (2)举例: #include "stdafx.h" #include<iostream> using namespace std; int Add(int a, int b) { return a

C++纯虚函数、虚函数、实函数、抽象类,重载、重写、重定义

首先,面向对象程序设计(object-oriented programming)的核心思想是数据抽象.继承.动态绑定.通过数据抽象,可以使类的接口与实现分离,使用继承,可以更容易地定义与其他类相似但不完全相同的新类,使用动态绑定,可以在一定程度上忽略相似类的区别,而以统一的方式使用它们的对象. 虚函数的作用是实现多态性(Polymorphism),多态性是将接口与实现进行分离,采用共同的方法,但因个体差异而采用不同的策略.纯虚函数则是一种特殊的虚函数.虚函数联系到多态,多态联系到继承. 一.虚函