2

問題は、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 番目に、コピーは非推奨であると書かれています。どういう意味ですか?

4

1 に答える 1