[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[jfriends] Re: コピーコンストラクター




こんにちは。金田@フリーです。

>>しかしながら、JavaではC++のデフォルトコピーコンストラクタが無いために
>>メンバ毎のコピーをすべてコーディング(clone()の呼び出しを列記)しなけれ
>>ばならず、面倒です。
>
>逆にC++にはなぜデフォルトコンストラクターがあるのか、という問いが浮かびますが、
>なかったらたしかに面倒ですね。

デフォルトコピーコンストラクタとデフォルトコンストラクタは別物です。
自分で何も書かないと、メンバ変数にポインタがある場合は、ポインタの
コピー(浅いコピーですね)になります。
ポインタのコピーではまずい時や、リファレンスカウント等のテクニックを
使いたい時は、プログラマがコピーコンストラクタと operator=(コピー
するやつ(^^;)を実装することになります。

>>実装していたら、Objectから派生するクラスはそれを継承して、
>>すべてのクラスがclone可能になってしまって、意味がありません。
>
>それはそうですね。

C++で、デフォルトコピーコンストラクタではまずいけれど、自分で
コピーコンストラクタを書くのが面倒だという時は、privateのところに
コピーコンストラクタと operator=の宣言だけを書いたりしますね。
これで一応 clone不可能か(^^;
# 私のコードには、この手の手抜きが多い(^^;

ところで深いコピーの実装で、シリアライズして読み戻す(これをメモリ上で
行う)なんてやり方もあったと思いますが、Javaで簡単に実装できそうですか?
# Javaは勉強不足なもので(^^;

---------------------------------------------------------------
金田 誠@フリー
mail: kanedam@xxxxxxxxxx
      GEH10123@xxxxxxxxxx
URL : http://www3.justnet.ne.jp/~kanedam/index.htm