Rubyにおけるオブジェクトのディープコピー
new_obj = Marshal.load(Marshal.dump(obj))
でオブジェクトのディープコピーを行えます。
RubyのinitializeメソッドにC++・Javaの
コピーコンストラクタに相当する機能は
ありません。
initialize_copyメソッドは浅い(shallow) コピー
になります。
initialize(obj)メソッド内でMarshal.load(Marshal.dump(obj))
を呼ぶ出せば、クラス外からはコピーコンストラクタのよう
に扱えます。
#Object - Rubyリファレンスマニュアルの注釈1にディープコピーに
#関する記述があります。
String等一部のクラスではnewメソッドでディープコピーできます。
クラスのリファレンスを参照してから、上記の方法を検討する
ことをお薦めします。