c++中函数重载的原则是什么啊,C++中的“重载”是什么意思?

2020-11-24 22:53:44 字数 5736 阅读 7321

1楼:百度用户

函数重载的定义:

函数重载是指在同一作用域内,可以有一组具有相同函数名,不同参数列表的函数,这组函数被称为重载函数。、

所以原则就是相同的函数名,不同的参数列表。返回值不能作为重载依据。

2楼:

函数名相同,形参类型或形参数目不同,这是最基本的要求。

c++中的“重载”是什么意思?

3楼:凌战

c++中重载很重要,重载就是一个函数名对应着多个功能不一函数体,比如通过重载operator+,

int operator+(int x , int y )char * operator+(char * x,char *y)a+b调用operator+函数;系统判断a,b类型,如果a,b是整数,a=1,b=2,则a+b=3,当a 为字符串”hello"时,b为“world”,则a+b为“hello world”

4楼:贵淑英逢媪

c++中的重载  函数重载:

函数重载就是函数名称相同,但定义却不同。函数重载使得程序员可以将一系列的函数族定义为一个统一的界面,但是却可以处理不同类型数据或接受不同个数的参数。这实现了统一接口,不同定义的思想。

流的重载:

c++的流提取运算符》和就插入运算符《是c++类库提供的输入

输出(i/o)操作符。系统与定义了输入流类istream和输出流类ostream,cin和cout分别是istream和ostream的对象。

iostream头文件中已经对》和《进行了重载,使得它能用来输入/输出标准类型的数据。但如果是自己定义类型,就需要重

载在这两个运算符,以便它们能输入/上岁数出该自定义类型。格式如下:

流插入的重载:ostream

&operator<<(ostream

&,自定义类

&);流提取的重载:istream

&operator>>(istream

&,自定义类

&);运算符的重载:

运算符的重载就是对运算符的重新定义,即一个运算符可以用于多种数据类型的运算中。运算符的重载在实际编程中使用很普遍,例如,“+”运算符既可以用于整数加,也可以用于浮点加,甚至是字符串的链接。格式如下:

type

operator

sign

(参数列表);

5楼:安富贵台环

重载,是指允许存在多个同名函数,而这些函数的参数表不同(或许参数个数不同,或许参数类型不同,或许两者都不同)。其实,重载的概念并不属于“面向对象编程”,重载的实现是:编译器根据函数不同的参数表,对同名函数的名称做修饰,然后这些同名函数就成了不同的函数(至少对于编译器来说是这样的)。

如,有两个同名函数:function

func(p:integer):integer;和function

func(p:string):integer;。

那么编译器做过修饰后的函数名称可能是这样的:int_func、str_func。对于这两个函数的调用,在编译器间就已经确定了,是静态的(记住:

是静态)。

6楼:宾秀荣靳甲

c++重载是c语言中的一种函数表现方式,即重载函数。

c++中函数重载有什么用?

7楼:鱼尾挚爱白菜

类的构造函数跟类名相同,即构造函数都同名。如果没有函数重载机制,要想实例化不同的对象非常麻烦。

操作符重载,本质上就是函数重载,它大大丰富了已有操作符的含义,方便使用,例如“+”可用于连接字符串等。

重载函数是函数的一种特殊情况,为方便使用,c++允许在同一范围中声明几个功能类似的同名函数,但是这些同名函数的形式参数(指参数的个数、类型或者顺序)必须不同,也就是说用同一个运算符完成不同的运算功能。这就是重载函数。重载函数常用来实现功能类似而所处理的数据类型不同的问题。

8楼:卷轩诸云泽

1、函数重载是指在同一作用域内,可以有一组具有相同函数名,不同参数列表的函数,这组函数被称为重载函数。

2、重载函数通常用来命名一组功能相似的函数,这样做减少了函数名的数量,避免了名字空间的污染,对于程序的可读性有很大的好处。

3、具体优点说来有三点:

(1)、试想如果没有函数重载机制,如在c中,必须要这样去做:为这个print函数取不同的名字,如print_int、print_string。这里还只是两个的情况,如果是很多个的话,就需要为实现同一个功能的函数取很多个名字,如加入打印long型、char*、各种类型的数组等等。

这样做很不友好!

(2)、类的构造函数跟类名相同,也就是说:构造函数都同名。如果没有函数重载机制,要想实例化不同的对象,那是相当的麻烦!

(3)、操作符重载,本质上就是函数重载,它大大丰富了已有操作符的含义,方便使用,如+可用于连接字符串等!

9楼:桐军夷婉丽

以algorithm里的sort函数为例,default

(1)template

void

sort

(randomaccessiteratorfirst,

randomaccessiterator

last);

custom

(2)template

void

sort

(randomaccessiteratorfirst,

randomaccessiterator

last,

***pare

***p);

这是http://****cplusplus.

***/reference/algorithm/sort/上的内容,sort有两种形式,第一种接受两个迭代器,然后对序列排序,第二种,接受两个迭代器和一个自定义的比较函数来告诉sort该怎么样进行排序。

你可以看到,两种形式的差别在与第二种形式多了一个参数,为了实现这种函数,

1.要么使用变参函数,写一个sort(iter,iter,...)来将第三个参数作为变参

2.要么使用函数重载函数,写两个参数不同的sort函数3.要么只写三个参数的形式,然后给第三个参数一个默认值。

这三种方法都可以实现函数名相同,参数不同的函数。你可以在标准库里看到许多重载的函数,使用相同的函数名表示我在做同一件事,而接受参数不同,可以用于不同的情况。相比于使用变参而言,第二种和第三种技术会更简单,更方便。

10楼:匿名用户

重载是是c++的机制,是指具有同名但具有不同签名(返回类型和参数)的一组函数可以同时存在,有编译器在编译时自动匹配合适函数的机制。而c不允许存在同名函数,如果需要同名但不同参数的调用,只能采用变参技术。

原因:c++ 编译时,会根据函数名、返回值、参数给函数 重新取名为,有不用函数名称、函数签名的函数会有不同的不同的函数名称,因此编译时可以根据 这些要素找到匹配的调用函数;

而c, 在编译时,只根据函数名称找匹配的函数,因此不允许存在两个同名函数。

作用:主要作用为,对外提供类似功能的统一接口。

如:打开文件,打开电源,打开窗户等都是打开动作,在c中我们必须提供 openfile()、openpower()、openwindow() 等一系列不同名称的函数,这对外部调用带来很多困难,因为我们必须记住所有的打开函数名称。但c++中我们只提供open(tfile& file),open(tpower& power), open(twindow& window)即可,调用者只需要记住有open()函数即可。

这回大大可以程序可读性和开发效率。

c++中成员函数重载是什么意思?

11楼:腾讯电脑管家

重载函数

重载,英文为overloading,大概就是很多个的意思。

举个例子,比如,我需要个函数。

取2个int的最大值。很容易,函数接口应该是(1) int max(int a, int b);

那更进一步,我取3个 int 的最大值呢,接口可以定义为(2) int max(int a, int b, int c);

对比 函数(1), (2), 的名字,是一样的,都叫 max,就只有参数的个数不同。这是函数重载。

那现在,我需要取两个float的最大值呢,接口也可以定义为(3) float max(float a, float b);

对比 函数(1),(3), 名字也是一样的,叫max。参数个数也是一样的。不过参数的类型不同。这也是函数重载。

c++中采用函数重载的目的是什么

12楼:陈宗权

主要是避免长函数名。

比如,有两个函数,要计算整型数组和双精度数组的最大值,可以分别声明为int max_of_int_array(int a, int n);

和double max_of_double_array(double a, int n);

但在c++的重载机制下,只需要用

int max(int a, int n);

double max(double a, int n);

类似的,如果有两个函数,分别计算两个整数和三个整数的最大值,可以分别声明为

int max_2(int a, int b);

int max_3(int a, int b, int c);

但在c++的重载机制下,只需要用

int max(int a, int b);

int max(int a, int b, int c);

13楼:梦的永远

为什么需要函数重载?

试想如果没有函数重载机制,如在c中,你必须要这样去做:为这个print函数取不同的名字,如print_int、print_string。这里还只是两个的情况,如果是很多个的话,就需要为实现同一个功能的函数取很多个名字,如加入打印long型、char*、各种类型的数组等等。

这样做很不友好!

类的构造函数跟类名相同,也就是说:构造函数都同名。如果没有函数重载机制,要想实例化不同的对象,那是相当的麻烦!

操作符重载,本质上就是函数重载,它大大丰富了已有操作符的含义,方便使用,如+可用于连接字符串等!

我也是在这篇文章中看到了,所以推荐你也看看那个文章吧!

14楼:匿名用户

多态性是面向对象程序设计的重要特征之一。它与前面讲过的封装性和继承性构成了面向对象程序设计的三大特征。这三大特征是相互关联的。

封装性是基础,继承性是关键,多态性是补充,而多态又必须存在于继承的环境之中。

所谓多态性是指发出同样的消息被不同类型的对象接收时导致完全不同的行为。这里所说的消息主要是指对类的成员函数的调用,而不同的行为是指不同的实现。利用多态性,用户只需发送一般形式的消息,而将所有的实现留给接收消息的对象。

对象根据所接收到的消息而做出相应的动作(即操作)。

函数重载和运算符重载是简单一类多态性,所谓函数重载简单地说就是赋给同一个函数名多个含义。具体地讲,c++中允许在相同的作用域内以相同的名字定义几个不同实现的函数,可以是成员函数,也可以是非成员函数。但是,定义这种重载函数时要求函数的参数或者至少有一个类型不同,或者个数不同。

而对于返回值的类型没有要求,可以相同,也可以不同。那种参数个数和类型都相同,仅仅返回值不同的重载函数是非法的。因为编译程序在选择相同名字的重载函数时仅考虑函数表,这就是说要靠函数的参数表中,参数个数或参数类型的差异进行选择。

由此可以看出,重载函数的意义在于它可以用相同的名字访问一组相互关联的函数,由编译程序来进行选择,因而这将有助于解决程序复杂性问题。如:在定义类时,构造函数重载给初始化带来了多种方式,为用户提供更大的灵活性。

c++中的运算符重载主要用来做什么

1楼 匿名用户 主要是用来使对象之间可以做运算操作的 比如 你定义了一个类的对象a而这个对象中有一个数据 又定义了一个b对象也有一个数据 你须要使用a b来计算这两个对象中数据的合 就须要运算符重载 运算符重载不光是可以重载四则运算的 也可以重载 下标运算符 输入输出运算符等等 运算符重载主要的用途...

c++中是什么意思,在c++中|=是什么意思

1楼 铁血战士 a b 这句相当于 a a b 所谓的复合求值。表示a和b逻辑或之后,把结果在赋给a 2楼 乔显萍 两边得值做或运算, 例如 2 3 10 2的二进制 11 3的二进制 11 3的二进制 即打印得结果为3 只要有一个为1,结果就为1 与运算 2 3 为 全为1,结果才为1,否则为0,...

C++中《符号什么意思,C++ <<符号的意思

1楼 笨笨 重定向,《和》是表示输出的方向,cout 这是定向到标准输出,而如果是ofstream file file x 这则表示定向到文件里面。 2楼 兔子和小强 流操作符 或 移位运算符 左移 3楼 匿名用户 数据流输出的方向 cin 输入 cout《输出 4楼 匿名用户 在cout 中是输出...