C++学习摘要

C++学习摘要

参考下:http://www.bianceng.cn/Programming/cplus/200911/12302.htm#

参考百度百科:

重载,在一个类定义中,可以编写几个同名的方法,但是只要它们的签名参数列表不同,Java就会将它们看做唯一的方法。简单的说,一个类中的方法与另一个方法同名,但是参数表不同,这种方法称之为重载方法。

重载是可使函数运算符等处理不同类型数据或接受不同个数的参数的一种方法

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

被重载的 函数有不同版本,这些函数地位是一样的,可以根据特征标的不同选择不同的函数。被重定义的 函数也有不同的版本,但是你不能随意选择,你只能选择最新的版本,被重定义多发生在类之间的继承里。
4.》》 函数会有那么多版本,那么编译将选哪一个呢。当然,理想情况是,实参与 形参数据类型完全匹配,但是当不完全匹配时会怎样呢?这就要牵扯到c++里复杂的类型转换了。
在重载及 函数模板重载里, 编译器 选择函数,要经过以下三步,这个过程称为重载解析。
第一步:创建候选 函数列表,其中包含有与被调函数名称相同的函数与模板函数。
第二步:使用候选 函数列表创建可行函数列表。这些都是参数数目正确的 函数
第三步:确定是否有最佳可行的 函数。如果有,则使用。
确定最佳 函数,只考虑其特征标,而不考虑返回类型(也无从考虑,但是要是硬想办法的话,也有,不过没有必要为了不必要的性能而浪费资源)。确定最佳 函数,匹配特征标要依次经过以下判断:(1)完全匹配(常规函数优于模板;允许无关紧要的转换)(2)提升匹配(如char和short自动转换为int)(3)标准转换(int转换为char,long转换为double)(4)用户自定义的转换(如类声明中定义的 转换函数)。
完全允许无关紧要的转换,这些转换包括引用, 指针与实体之间, 数组与指针之间, 函数函数指针之间,const与非const等等。
其次还要注意还要注意匹配的优先级。1,指向非const数据的 指针和引用优先于const的指针和 引用参数匹配(这种优先级只有当指针或引用出现时产生)。2,非模板 函数,优于模板函数,显示具体化的模板将优于隐式具体化的模板,总之较具体的优先(注意,具体并不是由于显隐决定的,术语“最具体”是指 编译器推断使用哪种类型时执行的转换最少)。

重载是一种多态(如C++),有四种形式的多态:

1.虚 函数 多态  2模板多态 3重载 4转换
第二种说法
重载(overload)和多态无关,真正和多态相关的是覆盖(inheritance)。
派生类重新定义了基类的虚拟方法后,基类根据赋给它的不同的派生类引用,动态地调用属于派生类的对应方法,这样的方法调用在编译期间是无法确定的。因此,这样的方法地址是在运行期绑定的( 动态绑定)。
重载只是一种语言特性,是一种语法规则,与多态无关,与 面向对象也无关。
不过针对所谓的第二种重载,有一个专门的名词--重写或重定义。重载与重写的区别就在于是否覆盖,重写一般多发生在不同的类且存在继承关系之间,而重载多是在一个类里或者一块代码段里。
优点:

由于重载可以在同一个类中定义功能类似的函数,这给程序员管理类的相似函数提供了极大的方便。例如,在一个定义圆的类中,需要设定圆心和半径来确定一个圆对象,程序员不需要设定setRadius(float r)和SetPoint(float x,float y)两个不同名函数,而只需要设定一个CSetCicle函数名就够了。在这个简单的例子中重载并没有明显的优势,可是当一个类中相似功能函数有几十、上百个的时候,重载的优势就显现出来了,这时程序员不需要去记这么繁多的函数名,可以把更多的精力放在程序本身上。重载的方法只属于子类。


继承:

C++类继承中总共可以通过三个方式来实现,包括:公有继承(public),私有继承(private),保护继承(protected) 等。继承可以使现有的代码具有可重用性和可扩展性。
C++编程语言的应用范围比较广泛,能够以一种简单灵活的方式帮助开发人员实现许多功能。在C++类继承中,一个派生类可以从一个基类派生,也可以从多个基类派生。 从一个基类派生的继承称为单继承;从多个基类派生的继承称为多继承。

多态概念
多态指同一个实体同时具有多种形式。它是面向对象程序设计(OOP)的一个重要特征。如果一个语言只支持类而不支持多态,只能说明它是 基于对象的,而不是 面向对象的。C++中的多态性具体体现在运行和编译两个方面。运行时多态是动态多态,其具体引用的 对象在运行时才能确定。编译时多态是 静态多态,在编译时就可以确定 对象使用的形式。

C++中,实现多态有以下方法:虚函数抽象类重载,覆盖,模版。

作用:

把不同的子类 对象都当作父类来看,可以屏蔽不同子类 对象之间的差异,写出通用的代码,做出通用的 编程,以适应需求的不断变化。
赋值之后,父 对象就可以根据当前赋值给它的 子对象的特性以不同的方式运作。也就是说,父亲的行为像儿子,而不是儿子的行为像父亲。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值