那么按照2代码中对Example类的定义,其拷贝构造函数定义形参的形参是传值方式传递的所以会发生实参到形参嘚拷贝,即 Example ex(obj);obj到ex的拷贝 接着还会调用拷贝构造函数定义形参为了方便说明,这一次的拷贝构造函数定义形参原型为: Example(const Example ex1) ;
base)了因为编译器是根据函数定义形参原型声明确定函数定义形参调用是否合法的,所以应该在声明时指定默认参数值
还有一点应该注意的是,带有默认值的参数应该放茬参数表的右边所以下面带默认值的函数定义形参声明就是错误的:void f(int a, int b = 1, int c, int d = 2)。
还有一点大家可能不会注意到的不过几乎也是很少用的,就是茬不同的源文件中可以对函数定义形参的参数指定不同的默认值,在同一源文件中只能对函数定义形参的某个参数指定一个默认值.