いいえ、コピーコンストラクターと代入演算子を定義する場合、コンパイラーはそれ自体を暗黙的に宣言または定義しません。copy-constructorの定義では、引数をconstまたはnon-const参照のいずれかで取得できるため、コンストラクターは実際にはcopy-constructorであることに注意してください。同様にoperator=
[詳細の大部分を省略します。特に、どのような状況で暗黙的に宣言された特殊メンバー関数も暗黙的に定義されます]
12.8 [class.copy] / 2クラスXの非テンプレートコンストラクターは、最初のパラメーターがタイプX&、const X&、volatile X&、またはconst volatile X&であり、他のパラメーターがないか、他のすべてのパラメーターがない場合、コピーコンストラクターです。パラメータにはデフォルトの引数(8.3.6)があります。
12.8 [class.copy] / 7クラス定義でコピーコンストラクターが明示的に宣言されていない場合は、暗黙的に宣言されます。
12.8 [class.copy]/17ユーザー宣言のコピー代入演算子X::operator =は、クラスXの非静的非テンプレートメンバー関数であり、タイプX、X&、const X&、volatile X&、またはconstのパラメーターが1つだけあります。揮発性X&。
12.8 [class.copy] / 18クラス定義がコピー代入演算子を明示的に宣言していない場合、暗黙的に宣言されます。