C ++をプログラミングするとき、私たちは必要に応じてコピーコンストラクターを作成していました(またはそう教えられました)。数年前にJavaに切り替えたとき、代わりにCloneableインターフェースが使用されていることに気づきました。C#は、ICloneableインターフェイスを定義する同じルートをたどりました。クローン作成はOOPの定義の一部であるように私には思えます。しかし、なぜこれらのインターフェイスが作成され、コピーコンストラクターが削除されたように見えるのでしょうか。
考えてみると、(基本型への参照のように)型がわからないオブジェクトのコピーを作成する必要がある場合、コピーコンストラクタは役に立たないだろうと思いました。これは論理的なようです。しかし、私が知らない他の理由があるのではないかと思います。その理由として、Cloneableインターフェースがコピーコンストラクターよりも好まれてきました。