在进行函数参数赋值时,
complex(1,2);//r=1 i=2
complex(3);//r=3 i=0
complex();//r=0 i=0
注意:
- 在函数原型声明中可指定默认参数;在函数定义中不可指定
complex(double r=0,double i=0);//原型声明 √
complex(double r=0,double i=0)//函数定义 ×
2.在函数原型中,所有带默认值的参数必须出现在未带默认值参数右边。
`void f(int i=0,int j=1,int k);//×
void f(int k,int i=0,int j=1);//√ `
3.在函数调用时,若某个参数省略,则其后所有参数均省略采用默认参数值。而不能在某个参数省略后,后面的参数仍然赋参数值。
vcomplex(,12);//×
4.避免二义性
eg:带默认参数的函数的应用-----求平面上两点的距离。
#include<iostream>
#include<math.h>
using namespace std;
class point{
private:
int x,y;
public:
point(int x1=0,int y1=0);
double distance(point p);
};
int main()
{
point p1(3,4),p2;
cout<<"distance="<<p1.distance(p2)<<endl;
return 0;
}
point::point(int x1,int y1)
{
x=x1;
y=y1;
}
double point::distance(point p)
{
double d;
d=sqrt((x-p.x)*(x-p.x)+(y-p.y)*(y-p.y));
return d;
}
结果为:
distance=5