C++法則4: 如果一個構造函數的第一個參數是自身類類型的引用,且任何額外參數都有默認值,則此構造函數是拷貝構造函數。
拷貝構造函數的定義:
-
第一個參數是自身類類型的引用:
-
必須是引用(通常為
const
引用,但非const
引用也可以)。 -
如果傳值(而非引用),會導致無限遞歸,因為傳值會調用拷貝構造函數自身。
-
例如:
const MyClass&
?或?MyClass&
。
-
-
額外參數有默認值:
-
可以有其他參數,但這些參數必須有默認值。
-
如果沒有其他參數,就是一個典型的拷貝構造函數;如果有額外參數,則稱為帶額外參數的拷貝構造函數(但本質上仍是拷貝構造函數)。
-
-
函數名與類名相同:
-
作為構造函數,函數名必須與類名一致。
-