C++ c函数重载的规则疑问

一个c++关于函数重载的问题_百度知道c++重载函数问题_百度知道关于运算符重载的问题_c++吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:249,201贴子:
关于运算符重载的问题收藏
就是这句看不懂,求大神教?
c++一般需要4-8周,就可以掌握.4个月=两年的工作经验,月薪过万.c++的费用根据培训课时定,免费试听编程课程,名师授课,手把手传教.
好像是运算加操作等于运算a
重载的(+=)这个整体符号吧
重载+=运算符 返回account的引用
重载不是函数名相同,功能/参数可以不同吗?比如同一个函数名sum,可以写一个求整数的和,再写一个求浮点数的和,或者就3个数的和!
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或重载_百度百科
[zhòng zài]
重载,简单说,就是函数或者方法有相同的名称,但是参数列表不相同的情形,这样的同名不同参数的函数或者方法之间,互相称之为重载函数或者方法。
重载编程语言中的重载
编程中重载的定义:函数名相同,函数的参数列表不同(包括参数个数和参数类型),至于返回类型可同可不同。
重载是可使函数、等处理不同类型数据或接受不同个数的参数的一种方法,关于重载一词在词义上有两种不同的说法:
重载多态:
重载是一种多态(如C++,Java),有四种形式的多态:
所谓的动态和静态区分是另一种基于绑定时间的多态分类,严格来说,重载是编译时多态,即静态多态,根据不同类型函数编译时会产生不同的名字如int_foo和char_foo等等,以此来区别调用。故重载仍符合多态定义——通过单一标识支持不同特定行为的能力,只是重载属于静态多态,而不是通过继承和实现的动态多态。
重载覆盖:
重载(overloaded)和多态无关,真正和多态相关的是覆盖(inheritance)。
当重新定义了基类的虚拟方法后,基类根据赋给它的不同的派生类引用,动态地调用属于派生类的对应方法,这样的方法调用在编译期间是无法确定的。因此,这样的方法地址是在运行期绑定的()。
重载只是一种语言特性,是一种语法规则,与多态无关,与也无关。
不过针对所谓的第二种重载,有一个专门的名词--重写或重定义。重载与重写的区别就在于是否覆盖,重写一般多发生在不同的类且存在继承关系之间,而重载多是在一个类里或者一块代码段里。
由于重载可以在同一个类中定义功能类似的函数,这给程序员管理类的相似函数提供了极大的方便。例如,在一个定义圆的类中,需要设定圆心和半径来确定一个圆对象,程序员不需要设定setRadius(float r)和SetPoint(float x,float y)两个不同名函数,而只需要设定一个CSetCicle函数名就够了。在这个简单的例子中重载并没有明显的优势,可是当一个类中相似功能函数有几十、上百个的时候,重载的优势就显现出来了,这时程序员不需要去记这么繁多的函数名,可以把更多的精力放在程序本身上。重载的方法只属于子类。
1.函数名必须相同,返回值可以相同,也可以不同,但是特征标必须不同。是函数名来确定函数的不同,是特征标是函数可以重载。首先选在函数名,然后再根据特征标在众多重载的函数中找到合适的。
2.匹配函数时,编译器将不区分类型引用和类型本身,也不区分const和非const变量。(小注:因为这些在定义和声明时可能不同,但是在调用时都是一样的,编译器将无法区分)。但是值得注意的是,与const形参的等价性仅适于非引用形参。有const引用形参的函数与有非const引用形参的函数是不同的。类似的,如果函数带有指向const类型的形参,则与带有指向相同类型的非const对象的指针形参的函数不相同。
3.名称修饰(name decoration)。将根据原型中指定的形参对每个函数名进行加密。
被重载的函数有不同版本,这些函数地位是一样的,可以根据特征标的不同选择不同的函数。被重定义的函数也有不同的版本,但是你不能随意选择,你只能选择最新的版本,被重定义多发生在类之间的继承里。
4.函数会有那么多版本,那么编译将选哪一个呢。当然,理想情况是,实参与的数据类型完全匹配,但是当不完全匹配时会怎样呢?这就要牵扯到c++里复杂的类型转换了。
在重载及重载里,,要经过以下三步,这个过程称为重载解析。
第一步:创建候选函数列表,其中包含有与被调函数名称相同的函数与模板函数。
第二步:使用候选函数列表创建可行函数列表。这些都是参数数目正确的函数。
第三步:确定是否有最佳可行的函数。如果有,则使用。
确定最佳函数,只考虑其特征标,而不考虑返回类型(也无从考虑,但是要是硬想办法的话,也有,不过没有必要为了不必要的性能而浪费资源)。确定最佳函数,匹配特征标要依次经过以下判断:(1)完全匹配(常规函数优于模板;允许无关紧要的转换)(2)提升匹配(如char和short自动转换为int)(3)标准转换(int转换为char,long转换为double)(4)用户自定义的转换(如类声明中定义的)。
完全允许无关紧要的转换,这些转换包括引用,与实体之间,与指针之间,函数与之间,const与非const等等。
其次还要注意匹配的优先级。1,指向非const数据的指针和引用优先于const的指针和匹配(这种优先级只有当指针或引用出现时产生)。2,非模板函数,优于模板函数,显示具体化的模板将优于隐式具体化的模板,总之较具体的优先(注意,具体并不是由于显隐决定的,术语“最具体”是指推断使用哪种类型时执行的转换最少)。
通常,继承的方法,因此,在调用对象继承方法的时候,调用和执行的是基类的实现.但是,有时需要对派生类中的继承方法有不同的实现.
例如,假设动物类存在&跑&的方法,从中派生出马和狗,马和狗的跑得形态是各不相同的,因此同样方法需要两种不同的实现,这就需要&重新编写&基类中的方法.
&重写&基类方法就是修改它的实现或者说在派生类中重新编写
//java代码
//方法重写
public&class&Father{
public&void&ovel(int&i){
/*do&something...*/
public&String&ovef(){
/*do&something...*/
return&&***&;
public&class&Son&extends&Father{
public&void&ovel(int&i){
/*do&other&something...*/
public&String&ovef(){
/*do&other&something...*/
return&&XXX&;
重载变压器重载
连续负荷在变压器容量80%到满载的情况。
电气行业通常称呼的重载,实际上是重载连接器的简称,又名重载插座,广泛应用于建筑机械、纺织机械、包装印刷机械、烟草机械、电力机车和石化电气等需要进行电气和信号连接的设备中。
重载连接器在结构设计、材料使用方面的国际先进性使得连接器在电气性能方面表现突出。对于电气连接系统的可靠性是传统的连接方式无法达到的。
企业信用信息C++ 函数重载问题求教!_百度知道

我要回帖

更多关于 c 函数的重载 的文章

 

随机推荐