2
私は '='をPerlで直接オーバーロードすることはできませんが、私は '='を使って自分のオブジェクトのコピーコンストラクタを呼び出せるようにしたいと考えています。Perlでコピーコンストラクタを呼び出すにはどうしたらいいですか?
例:
my $object1 = Object->new('value' => 1);
# I want this to invoke the copy constructor of "$object1" instead of copying a reference
my $object2 = $object1;
# This should not modify "$object1"
$object2->set_value(12);
print $object1->get_value()."\n";
print $object2->get_value()."\n";
私は出力になりたい:
1
12
は、どのように私はこの作業を行うことができますか?
Perlは、コンストラクタを持ってコピーするか、そうでない場合はありません。コンベンションは 'クローン'と呼ばれるメソッドを作ることです。 //オーバーロードされた演算子以外のオブジェクトが不変の場合は、[this](http://search.cpan.org/perldoc?overload#Copy_Constructor)を使用してコピーオンライトを実行できます。しかし、ここではそうではありません。 – ikegami
私はオーバーロードされた演算子を除いて私のオブジェクトを不変にするかもしれないと思う。それは最もエレガントなアプローチかもしれないように見えます。 – tjwrona1992
PerlはC++ではなくPerlとして扱ってください。何らかの形で他の言語で使用したセマンティクスを実行しようとすると、言語との幸せな関係は決してありません。 –