C++note3

xiaoxiao2021-02-28  110

 函数的重载    C中,每个函数都必须有唯一的一个名字,这个就必须记住每一个函数的名字。  例如经常所见的求最大值的函数,数据类型不同,函数名不能相同。  int max1(int ,int);  int max2(int ,int, int);  double  max3(double, double);    C++中允许同名函数存在,但需要函数的参数不同:即形参个数不同或形参  个数相同,但参数类型有所不同。----这就是重载。  #include <iostream>    using namespace std;     int max(int,int);  double max(double,double);  int max(int,int,int);     int main()  {      int i=5, j=9, k=10, p=0;      double  m=33.4, n=8.9, q=0;      p=max(i,j);      cout<<i<<","<<j<<"max in two"<<p<<endl;      p=max(i,j,k);      cout<<i<<","<<j<<","<<k<<"max in three"<<p<<endl;      q=max(m,n);      cout<<m<<","<<n<<"max in two"<<q<<endl;            return 0;  }    int max(int x,int y)  {      return x>y?x:y;  }  double max(double x,double y)  {      return x>y?x:y;  }    int max(int x,int y,int z)  {      int temp;      temp = x>y?x:y;      temp = temp>z?temp:z;      return temp;  }        带默认值的函数      函数调用时,形参值是由实参数决定,形参实参必须相同。  C++还提供一种方法,为形参设置一个默认值,即形参不从实参取值。    函数的声明    默认值在函数声明中提供,但当有声明又有定义时,定义中不允许有默认值。  如果函数只有定义,则默认值可以出现在函数定义中。      #include  <iostream>  using namespace std;    void point(int x,int y=0, int z=0)  {      cout<<"("<<x<<","<<y<<","<<z<<")"<<endl;  }    int main()  {     int x,y,z;          cout<<"X, Y,Z:"<<endl;     cin>>x>>y>>z;     point(x);     point(x,y);     point(x,y,z);          return 0;  }      带默认值的形参顺序规定  在函数中有多个默认参数,则形参从最右边依次向左设定。当调用函数时,只能向左匹配参数。  错误的表示:  void  point(int=0,int, int=0);  void point(int=0,int=0,int);    调用时: point(x): ok point(x,y);ok point(x,y,z);ok point(); error point(x, , z); error 默认参数与函数重载 使用带默认值的函数可以将一些简单的函数合并为一个函数。但是如果一个函数不能既作为重载函数, 又作为带默认值的函数。会出现二义性,系统无法执行。 例:point(int x,int y);     point(int x,int y=0, int z=0);     point(x,y);            默认值的限定 默认值:可以是全局变量,全局常量,也可以作为一个函数表达式。默认值不能是局部变量。

转载请注明原文地址: https://www.6miu.com/read-84212.html

最新回复(0)