1楼:凌战
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”
2楼:贵淑英逢媪
c++中的重载 函数重载:
函数重载就是函数名称相同,但定义却不同。函数重载使得程序员可以将一系列的函数族定义为一个统一的界面,但是却可以处理不同类型数据或接受不同个数的参数。这实现了统一接口,不同定义的思想。
流的重载:
c++的流提取运算符》和就插入运算符《是c++类库提供的输入
输出(i/o)操作符。系统与定义了输入流类istream和输出流类ostream,cin和cout分别是istream和ostream的对象。
iostream头文件中已经对》和《进行了重载,使得它能用来输入/输出标准类型的数据。但如果是自己定义类型,就需要重
载在这两个运算符,以便它们能输入/上岁数出该自定义类型。格式如下:
流插入的重载:ostream
&operator<<(ostream
&,自定义类
&);流提取的重载:istream
&operator>>(istream
&,自定义类
&);运算符的重载:
运算符的重载就是对运算符的重新定义,即一个运算符可以用于多种数据类型的运算中。运算符的重载在实际编程中使用很普遍,例如,“+”运算符既可以用于整数加,也可以用于浮点加,甚至是字符串的链接。格式如下:
type
operator
sign
(参数列表);
3楼:安富贵台环
重载,是指允许存在多个同名函数,而这些函数的参数表不同(或许参数个数不同,或许参数类型不同,或许两者都不同)。其实,重载的概念并不属于“面向对象编程”,重载的实现是:编译器根据函数不同的参数表,对同名函数的名称做修饰,然后这些同名函数就成了不同的函数(至少对于编译器来说是这样的)。
如,有两个同名函数:function
func(p:integer):integer;和function
func(p:string):integer;。
那么编译器做过修饰后的函数名称可能是这样的:int_func、str_func。对于这两个函数的调用,在编译器间就已经确定了,是静态的(记住:
是静态)。
4楼:宾秀荣靳甲
c++重载是c语言中的一种函数表现方式,即重载函数。
c++运算符重载是什么意思
5楼:北大青鸟
所谓重载,就是重新赋予新的含义。函数重载就是对一个已有的函数赋予新的含义,使之实现新功能,因此,一个函数名就可以用来代表不同功能的函数,也就是”一名多用”。
运算符也可以重载。实际上,我们已经在不知不觉之中使用了运算符重载。例如,大 家都 已习惯于用加法运算符”+”对整数、单精度数和双精度数进行加法运算,如5+8, 5.
8 +3.67等,其实计算机对整数、单精度数和双精度数的加法操作过程是很不相同的, 但由于c++已经对运算符”+”进行了重载,所以就能适用于int, float, double类型的运算。
又如”<<“是c++的位运算中的位移运算符(左移),但在输出操作中又是与流对 象cout 配合使用的流插入运算符,”>>“也是位移运算符(右移),但在输入操作中又是与流对象 cin 配合使用的流提取运算符。这就是运算符重载(operator overloading)。c++系统对”<<“和”>>“进行了重载,用户在不同的场合下使用它们时,作用是不同 的。
对”<<“和”>>“的重载处理是放在头文件stream中的。因此,如果要在程序中用”<<“和”>>”作流插入运算符和流提取运算符,必须在本文件模块中包含头文件stream(当然还应当包括”using namespace std“)。
在c++中不能在程序中直接用运算符”+”对复数进行相加运算。用户必须自己设法实现复数相加。例如用户可以通过定义一个专门的函数来实现复数相加。
6楼:匿名用户
比如+运算在正常情况下只能对基本类型(int 、float等)进行加法
重载之后就可以对复数a+bi进行加法(重载函数要针对复数去写) 如:(a+bi)+(c+di)=(a+b)+(c+d)i
重载完之后+就可以完成上面功能
7楼:匿名用户
先去了解什么是函数重载吧。大概意思就是两个同名的函数,利用形参的不同来作区分。
c++中 运算符重载 到底有什么何意义?
8楼:匿名用户
运算符重载是一种特殊的函数重载。例如int a,b;则求a+b值时,在编译过程中使用的是函数调用:opertor+(a,b).主要作用就是使程序更加简洁,减少编程时间。
9楼:匿名用户
运算符重载是一种特殊的函数重载。
c++的一大特性就是重载(overload),通过重载可以把功能相似的几个函数合为一个,使得程序更加简洁、高效。在c++中不止函数可以重载,运算符也可以重载。
由于一般数据类型间的运算符没有重载的必要,所以运算符重载主要是面向对象之间的。
在进行对象之间的运算时,程序会调用与运算符相对应的函数进行处理,所以运算符重载有两种方式:成员函数和友元函数。
成员函数的形式比较简单,就是在类里面定义了一个与操作符相关的函数。友元函数因为没有this指针,所以形参会多一个。
10楼:湛蓝水晶
的确是一样的,比如你重载了加号,其实是同样可以定义add()函数来完成相同的操作。
重载是为了让运算比较符合人的思维,比如定义一个矩阵类matrixmatrix a, b ,c;
//...
//初始化a、b的语句
c = a+b; //如果没有重载加号的话,这条就通不过编译了只是这个+号你同样可以定义一个add函数来操作,如:
c = a.add(b);
你觉得哪种方法比较直观?
11楼:匿名用户
你想想如果两个时间相加,你用+号行吗?
你要是把+号重载一下,写一个你自己的+号运算方法不就可以了。
运算符重载就是自己定义符号
c++中函数重载的原则是什么啊?
12楼:百度用户
函数重载的定义:
函数重载是指在同一作用域内,可以有一组具有相同函数名,不同参数列表的函数,这组函数被称为重载函数。、
所以原则就是相同的函数名,不同的参数列表。返回值不能作为重载依据。
13楼:
函数名相同,形参类型或形参数目不同,这是最基本的要求。
c++中成员函数重载是什么意思?
14楼:du瓶邪
重载函数
重载,英文为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。参数个数也是一样的。不过参数的类型不同。这也是函数重载。
15楼:
函数的重载,主要是说,当你传进对应的参数的时候,调用的对应的函数。也就是楼上所说的多态。比如一个篮子可以装苹果8个或者装梨子4个。
当你告诉篮子说我要装苹果,它就给你返回一个说我能装8个。你又告诉篮子说我要装梨子,它就给你返回一个4个。就是这个意思。
16楼:歪歪
函数重载是指在同一作用域内,可以有一组具有相同函数名,不同参数列表的函数,这组函数被称为重载函数。重载函数通常用来命名一组功能相似的函数,这样做减少了函数名的数量,避免了名字空间的污染,对于程序的可读性有很大的好处。
1.2、为什么需要函数重载(why)?试想如果没有函数重载机制,如在c中,你必须要这样去做:
为这个print函数取不同的名字,如print_int、print_string。这里还只是两个的情况,如果是很多个的话,就需要为实现同一个功能的函数取很多个名字,如加入打印long型、char*、各种类型的数组等等。这样做很不友好!
类的构造函数跟类名相同,也就是说:构造函数都同名。如果没有函数重载机制,要想实例化不同的对象,那是相当的麻烦!
操作符重载,本质上就是函数重载,它大大丰富了已有操作符的含义,方便使用,如+可用于连接字符串等!
我们在开瓶瓶罐罐的时候,经常会遭遇因各种瓶口规格不同而找不到合适的工具的尴尬。所以有时候就为了开个瓶,家里要备多种规格的开瓶器。同样是开个瓶子嘛,何必这么麻烦?
于是有人发明了多功能开瓶器,不管啤酒瓶汽水瓶还是软木塞的红酒瓶都能轻松打开。
然而开瓶器的问题也会发生到程序设计中。比如我们要编写一个函数来求一个数的绝对值,然而整数、浮点型数、双精度型数都有绝对值,但为它们编写的函数返回值类型却是各不相同的。比如:
intiabs(inta);
floatfabs(floata);
doubledabs(doublea);
这样是不是有点备了多种开瓶器的感觉?我们能不能在程序设计中也做一个多功能的开瓶器,把所有数据类型的求绝对值都交给abs这一个函数呢?
在c++中,我们也能够把具有相同功能的函数整合到一个函数上,而不必去写好多个函数名不同的函数,这叫做函数的重(音chóng)载(overload)。重载的本质是多个函数共用同一个函数名。
我们先来看一个函数重载的实例:(程序6.3)
#include"iostream.h"
intabs(inta);//当参数为整型数据时的函数原型
floatabs(floata);//当参数为浮点型数据时的函数原型
doubleabs(doublea);//当参数为双精度型数据时的函数原型
intmain()
intabs(inta)//函数定义
floatabs(floata)
doubleabs(doublea)
运行结果:
intabs
intabs
a=5b=3
floatabs
floatabs
c=2.4
d=8.4
doubleabs
doubleabs
e=3e-009
f=3e+006
运行结果表明,abs函数果然能够处理三种不同数据类型的数据了。那么我们怎样才能自己造一个“多功能工具”呢?
其实要编写一个重载函数并不是很麻烦。首先,我们要告诉电脑,同一个函数名存在了多种定义,所以,我们要给同一个函数名写上多种函数原型(如程序6.3的第二到第四行);其次,我们要对应这些函数原型,分别写上这些函数的定义(如程序6.
3的主函数体之后,对三个abs函数的定义)。
然而电脑又是如何来识别这些使用在不同环境下的“工具”的呢?
在日常生活中使用到多功能工具,如果我们不知道具体应该使用哪个工具,我们会把每个工具放上去试一试,如果只有唯一一个工具适合,那么我们就毫无疑问地能够确定就是使用它了。但是如果出现了两个或者两个以上工具都能适合,我们就分不清到底应该使用哪个是正确的了。
电脑的做法和我们是类似的。电脑是依靠函数声明时参数表中参数个数、各参数的数据类型和顺序来判断到底要运行哪个函数的。因此,当重载函数参数表完全相同的时候,电脑便无法判断应该运行哪个函数,于是程序就出错了。
我们了解了电脑是如何识别重载函数以后,发现要编写一个重载函数还是需要注意一些地方的,那就是:在重载函数中,任意两个函数的参数表中的参数个数、各参数的数据类型和顺序不能完全一样。例如intfunc(inta,charb)和floatfunc(intc,chard)就不能重载,因为它们的参数个数、各参数的类型和顺序完全一样,即使形参名不同、返回值类型不同也是无济于事的。
在调用一个重载函数时,可能会发生找不到一个完全合适的函数。这时候,就需要进行数据类型的转换。由于这种方法可能导致数据丢失或数据类型不严格符合,且在充分考虑问题后,这种情况是可以尽量避免的,所以这里不再就这个问题论述。
有兴趣的读者可以查阅其他c++的参考资料。
从某种意义上说,重载函数是方便了函数的使用者。在前一节我们知道,如果完成了所有函数的编写,那么完成一个程序就像搭积木一样简单了。然而如果功能相似名字却不同的函数太多,那么多“积木”搭起来也未必简单。
当函数的编写者充分考虑了不同情况下应该运行稍有不同的函数,函数的使用者就不必为这些小细节而烦恼了。不过重载函数的函数名还是应该符合其功能,如果把功能完全不同的函数重载,那么就大大影响了程序的可读性。
c++中函数重载的原则是什么啊,C++中的“重载”是什么意思?
1楼 百度用户 函数重载的定义 函数重载是指在同一作用域内,可以有一组具有相同函数名,不同参数列表的函数,这组函数被称为重载函数。 所以原则就是相同的函数名,不同的参数列表。返回值不能作为重载依据。 2楼 函数名相同 形参类型或形参数目不同,这是最基本的要求。 c 中的 重载 是什么意思? 3楼 凌...
c++中的运算符重载主要用来做什么
1楼 匿名用户 主要是用来使对象之间可以做运算操作的 比如 你定义了一个类的对象a而这个对象中有一个数据 又定义了一个b对象也有一个数据 你须要使用a b来计算这两个对象中数据的合 就须要运算符重载 运算符重载不光是可以重载四则运算的 也可以重载 下标运算符 输入输出运算符等等 运算符重载主要的用途...
请问在c++中是什么运算符,请问c++中的"^"运算符是什么运算符.
1楼 匿名用户 和c是一样的,先对所有的数据转换成二进制, 如果对应位有一个为1,则该位为1, 是两个全为1,则为1,否则为0, 代表两位相同的话则为0,否则为1 则4 6 100 110 110, 5 7 101 111 101 8 9 1000 1001 0001 2楼 傲世修罗王 是位运算符,...