1.函数重载
1)多态性
在程序中同一个符号或名字在不同的情况下具有不同的解释称之为多态性。
多态性有两种最基本的形式:1)编译时多态性;2)运行时多态性。
编译时多态性:在程序编译阶段可确定下来的多态性,主要通过重载机制实现,包括函数重载和运算符重载两大类。
运行时多态性:必须要等到程序动态运行时才可以确定的多态性,主要通过继承+动态绑定获得。
2)函数重载
重载机制:c++语言,中、,只要声明函数言行是形参的个数或者对应位置参数类型不同,两个或更多的函数就可以公用一个名字,在同一作用育种与许许多个函数使用同一个函数名。
编译程序根据实际参数个数与对应的数据类型,选择调用那个重载函数,因此重载函数必须在形式参数的个数上和类型上区分开来。(但是返回值类型不能作为区分重载函数的标准)
函数重载的二义性:导致c++编译器程序为u发在多个重载函数中选择正确的函数进行调用。二义性是致命的,因为编译程序将无法生成目标代码
二义性生成原因:1.隐式类型转换 2.缺省参数;
编译程序选择重载函数的规则:绑定的优先次序是
最优:精确匹配;
次优:对实参类型向高类型转换后的匹配(不丢失精度);
最次:对实参的类型向低类型及相容类型转换后的匹配(能做,但是会报warning)
函数重载不可滥用
不适当的函数重载会降低程序的可读性,只有函数实现的”语义非常相近“时才使用函数重载。
类定义中的函数重载:对类缺省成员函数的重载;构造函数重载(拷贝构造函数);赋值运算符。