先来了解默认参数是什么吧!

  默认参数是指在定义或声明函数时,为参数指定默认值,在调用函数时,可以传递参数,也可以不传递参数;如果没有传递参数,则在函数中使用默认参数的默认值!

  对于默认参数不要单纯的错误的理解为是函数的参数带有一个默认值,其实他强调的不仅是参数的默认的值还有如果没有传递参数可以使用默认的参数;也是说你调用函数时可以不带参数,却仍然能正常运行(这是用的是默认参数的默认值);因为编译器会自动调用默认参数。

  典型的是在带默认参数的构造函数:

  比如说你定义了一个class A;A有两个private数据成员int a;和int b;如果不是用默认的构造函数的话代码如下:


A();           //不带参数的构造函数
A(inta,int b);//带参数的构造函数


  如果你在新建对象时,如初始化


A a1;         //初始化调用A();
A a2(3,4);    //赋值调用A(int a,int b);


  而如果使用带默认参数的构造函数时不需要不带参数的构造函数了;如下:


A(int a=0,int b=0);


  则不需要在写出不带参数的构造函数了;因为你如果这样定义对象:


A a1;           //调用的还是A(inta=0,int b=0)因为编译器不再产生默认的构造函数A();而是直接调用A(int a=0,int b=0)
                //因为没有实参的构造函数,是默认构造函数,参数指定了默认值的构造函数也是默认构造函数,一个类只能有一个默认构造函数


  这里要说明的是一个类在写了默认构造函数之后不会自动生成默认的构造函数,如果你写的是带默认参数的构造函数,则其实已经有了默认构造函数,如果在定义一个会出现在A()会出错了!看看下面的代码吧!

  例如: