正在加载图片...
void print(float ) void print( char) 函数重载是一种方便的语言机制,它既可以运用于成员函数,也可以运用于一般函数, 成尤其是类构造函数,一般都有是重载的 (2)重载的方法 定义函数重载,函数名字相同,但所带的参数的个数或类型不同,编译器能够根据参数 来调用不同的同名函数。 如果函数的参数类型完全一致,仅仅是返回类型不同,则编译器认为出错。其原因有二 ①当函数的返回值不赋给某一个变量时,系统无法判断应调用哪一个函数:②即使当函数返 回值赋给一个变量时,系统也无法判断这一赋值是否进行了类型转换。如 int hello(; float helloo 当在程序中以下面的方式调用时,就会出现二义性问题 float f hello(; 如果存在着两个完全一致的函数定义,则认为第二个定义覆盖了第一个定义 (3)重载的注意点 函数重载提供了便利,但何时重载函数名收益最大却始终是一个问题。当一组函数执行 相似的操作时,要慎重考虑,是否有其他更好的处理方法。程序员在编写程序时不应着眼于 语言的特征,而应重点解决实际问题。在使用语言的特性时,应遵循应用程序的逻辑结 绝不可滥用语言所拥有的特性 (4)函数重载的例子 构造函数的重载,可以使系统的几个不同的对象初始化方式。 类成员函数的重载,使成员变量处理更有效率。 类外的一般函数也允许重载,常常用于一种多态性。如乘法运算。 [例6.1最大值函数max的重载版本程序EX6_1.CPP。 6.1.2运算符重载 运算符重载是对系统已有预定义的运算符赋予新的含义,用自然的方式将其发展到特殊 应用领域 重载一个运算符,要求满足两个条件:第一,不能改变运算符的初始意义:第二不能改 变运算符的操作的参数数目。运算符重载只是增加了一些与定义它的类相关的附加意义。 表6.1C+中可能重载的运算符 山_+士- i newdelete 注意:(1).::#*?:不能重载void print(float); void print(char); 函数重载是一种方便的语言机制,它既可以运用于成员函数,也可以运用于一般函数, 成尤其是类构造函数,一般都有是重载的。 (2)重载的方法 定义函数重载,函数名字相同,但所带的参数的个数或类型不同,编译器能够根据参数 来调用不同的同名函数。 如果函数的参数类型完全一致,仅仅是返回类型不同,则编译器认为出错。其原因有二: ①当函数的返回值不赋给某一个变量时,系统无法判断应调用哪一个函数;②即使当函数返 回值赋给一个变量时,系统也无法判断这一赋值是否进行了类型转换。如 int hello(); float hello(); 当在程序中以下面的方式调用时,就会出现二义性问题: float f; f=hello(); 如果存在着两个完全一致的函数定义,则认为第二个定义覆盖了第一个定义。 (3)重载的注意点 函数重载提供了便利,但何时重载函数名收益最大却始终是一个问题。当一组函数执行 相似的操作时,要慎重考虑,是否有其他更好的处理方法。程序员在编写程序时不应着眼于 语言的特征,而应重点解决实际问题。在使用语言的特性时,应遵循应用程序的逻辑结构, 绝不可滥用语言所拥有的特性。 (4)函数重载的例子 构造函数的重载,可以使系统的几个不同的对象初始化方式。 类成员函数的重载,使成员变量处理更有效率。 类外的一般函数也允许重载,常常用于一种多态性。如乘法运算。 [例 6.1]最大值函数 max 的重载版本程序 EX6_1.CPP。 6.1.2 运算符重载 运算符重载是对系统已有预定义的运算符赋予新的含义,用自然的方式将其发展到特殊 应用领域。 重载一个运算符,要求满足两个条件:第一,不能改变运算符的初始意义;第二不能改 变运算符的操作的参数数目。运算符重载只是增加了一些与定义它的类相关的附加意义。 表 6.1 C++中可能重载的运算符 + - * / % ^ & | ~ ! = < > += -= *= /= %= ^= &= != << >> >>= <<= = = != <= >= && || ++ -- [ ] ( ) -> new delete 注意:(1). ::# * ?:不能重载
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有