函数的缺省形参和构造函数的缺省形参

来源:互联网 发布:虚拟机和系统网络连接 编辑:程序博客网 时间:2024/05/02 01:41

我们先看一个定义的带有缺省形参的函数: 

int add(int a=4,int b=5){return a+b;}

我们在使用的时候,可以使用下面的方式:

cout<<add(1,2);cout<<add(1);cout<<add();

但是,如果我们使用下面的方式就不可以了:

cout<<add;

如果我们输出函数add的地址如下所示:

cout<<&add;

就可以看到,输出的结果和上面的结果是一样的。

所以,在使用缺省形参的函数的时候,我们如果没有传递一个参数的话,那么必须要在函数后面加一个“()”。

但是,对于构造函数的缺省形参,却不是这个样子。首先我们先看一个关于构造函数缺省形参的例子:

Point(int x=0,int y=0)//一个点类的构造函数{this->x=x;this->y=y;}

我们在定义点类的时候,下面的例子是错误的:

 

Point a();

 

虽然我们的构造函数有自己的形参,但是定义变量和定义对象不一样,我们如果想使用缺省参数的话,我们必须不带“()”,也就是下面的定义方式:

 

Point a;

Pointa(1);

 

第二种方式和定义函数一样,给出一个参数,另一参数使用默认的参数。

所以在使用带有缺省构造函数创建对象的时候,如果我们想全部都不传递参数(构造函数的所有参数都是缺省的),那么我们不可以使用“()”。这是和函数的使用不同的地方。