C++程序设计 湖南大学 杜四春、银红霞 1312函数重载的表示形式 普通成员函数重载可表达为两种形式: 1.在一个类说明中重载 例如: Show( int, char Show( char *, float 2.基类的成员函数在派生类重载。有3种编译区分 方法 1)根据参数的特征加以区分 例如: Show(int,char)与 Show( char * float 不是同一函数,编译能够区分
C++程序设计 湖南大学 杜四春、银红霞 13.1.2 函数重载的表示形式 普通成员函数重载可表达为两种形式: 1. 在一个类说明中重载 例如: Show ( int , char ) ; Show ( char * , float ) ; 2. 基类的成员函数在派生类重载。有3种编译区分 方法 (1)根据参数的特征加以区分 例如: Show ( int , char ) 与 Show ( char * , float ) 不是同一函数,编译能够区分
C++程序设计 湖南大学 杜四春、银红霞 (2)使用“∷”加以区分 例如 A: Show( 有别于B:Show() (3)根据类对象加以区分 例如: Aobj Show()调用A:Show() Bobj Show()调用B:Show()
C++程序设计 湖南大学 杜四春、银红霞 (2)使用“ :: ”加以区分 例如: A :: Show ( ) 有别于 B :: Show ( ) (3)根据类对象加以区分 例如: Aobj.Show ( )调用 A :: Show ( ) Bobj.Show ( )调用 B :: Show ( )
C++程序设计 湖南大学 杜四春、银红霞 1313函数重载的注意事项 在C+语言中,编译程序选择相应的重载函数版本 时函数返回值类型是不起作用的。不能仅靠函数的返 回值来区别重载函数,必须从形式参数上区别开来 例如: void print(int a) void print(int a, int b) int print(float a 这三个函数是重载函数,因为C++编译程序可以从 形式参数上将它们区别开来
C++程序设计 湖南大学 杜四春、银红霞 13.1.3 函数重载的注意事项 在C++语言中,编译程序选择相应的重载函数版本 时函数返回值类型是不起作用的。不能仅靠函数的返 回值来区别重载函数,必须从形式参数上区别开来。 例如: void print(int a); void print(int a,int b); int print(float a[]); 这三个函数是重载函数,因为C++编译程序可以从 形式参数上将它们区别开来
C++程序设计 湖南大学 杜四春、银红霞 但: int f(int a) double f(int a) 这两个函数就不是重载函数,编译程序认为这是 对一个函数的重复说明,因为两个函数的形式参数个 数与相应位置的类型完全相同。 由 typedef定义的类型别名并没有真正创建一个新 的类型,所以以下程序段: typedef double money double calculate( double income money calculate( money income 也是错误的函数重载
C++程序设计 湖南大学 杜四春、银红霞 但: int f(int a); double f(int a); 这两个函数就不是重载函数,编译程序认为这是 对一个函数的重复说明,因为两个函数的形式参数个 数与相应位置的类型完全相同。 由typedef定义的类型别名并没有真正创建一个新 的类型,所以以下程序段: typedef double money; double calculate(double income); money calculate(money income); 也是错误的函数重载
C++程序设计 湖南大学 杜四春、银红霞 同样道理,不同参数传递方式也无法区别重载函 数,如: void func(int value) void func(int &value) 也不能作为重载函数。 在程序中不可滥用函数重载,不适当的重载会降 低程序的可读性。C++语言并没有提供任何约束限制 重载函数之间必须有关联,程序员可能用相同的名字 定义两个互不相关的函数。实际上函数重载暗示了 种关联,不应该重载那些本质上有区别的函数,只有 当函数实现的语义非常相近时才应使用函数重载
C++程序设计 湖南大学 杜四春、银红霞 同样道理,不同参数传递方式也无法区别重载函 数,如: void func(int value); void func(int &value); 也不能作为重载函数。 在程序中不可滥用函数重载,不适当的重载会降 低程序的可读性。C++语言并没有提供任何约束限制 重载函数之间必须有关联,程序员可能用相同的名字 定义两个互不相关的函数。实际上函数重载暗示了一 种关联,不应该重载那些本质上有区别的函数,只有 当函数实现的语义非常相近时才应使用函数重载