C++法则4: 如果一个构造函数的第一个参数是自身类类型的引用,且任何额外参数都有默认值,则此构造函数是拷贝构造函数。
拷贝构造函数的定义:
-
第一个参数是自身类类型的引用:
-
必须是引用(通常为
const
引用,但非const
引用也可以)。 -
如果传值(而非引用),会导致无限递归,因为传值会调用拷贝构造函数自身。
-
例如:
const MyClass&
或MyClass&
。
-
-
额外参数有默认值:
-
可以有其他参数,但这些参数必须有默认值。
-
如果没有其他参数,就是一个典型的拷贝构造函数;如果有额外参数,则称为带额外参数的拷贝构造函数(但本质上仍是拷贝构造函数)。
-
-
函数名与类名相同:
-
作为构造函数,函数名必须与类名一致。
-