問題は、C++ プログラミング言語の第 4 版が次のように述べていることです。
この特定のケースでは、コピーまたは移動操作を削除するのを忘れていても、害はありません。ユーザーがデストラクタを明示的に宣言したクラスでは、移動操作は暗黙的に生成されません。 さらに、この場合、コピー操作の生成は推奨されません (§44.2.3)。これは、コンパイラが暗黙的にデストラクタを提供する場合でも、デストラクタを明示的に定義する正当な理由となります (§17.2.3)。
私はこのコードを試しました:
#include <iostream>
class Foo {
public:
~Foo() {}
}
int main() {
Foo x;
Foo y(x);
return 0;
}
ここにはエラーや例外はありません。C++98 ではコピー コンストラクターを暗黙的に生成する必要があることはわかっていますが、4 番目に、コピーは非推奨であると書かれています。どういう意味ですか?