K.Maebashi's BBS 投稿フォーム
ハンドル名
件名
Link
>>これが同じ意味になるのは、pascalにコピーコンストラクタのようなものがないからですよね。もしC++だったら別の意味になってしまいます。 > >なるほど。それはわかります。 > >>ということで、「コピー渡し」「原本渡し」という言葉を考えてみました。 >>従来「値渡し」と呼んでいるものは、たいていの場合スタックにコピーが作られるので「コピー渡し」であると。逆に「参照渡し」と呼んでいるものは「原本渡し」であると。 > >なんというか憂鬱本の「実体渡し」を彷彿とさせますが… それはさておき。 > >「変数引数」的なことをやりたいときに、参照渡しだと、実装上面倒なことに >なるケースがあるわけです。たとえばJavaでは、素朴なVMでは、ヒープ中の >オブジェクトの先頭以外、ポインタが継続して指すことはありませんが、 >参照渡しを許すと、ローカル変数やら、オブジェクトのメンバやら、配列の >要素を指すポインタが継続して保持されてしまう。これは、ガベージコレクタの >実装を考えると何かと面倒です。 > >そのせいかどうかは知りませんが、Javaは変数引数という機能を言語から >捨て去ってしまった。でも、やっぱりそれじゃswap()も作れないし不便だよね、 >という時に、call-by-value-resultという実装方法は効果を発揮するわけです。 > >Pascal的な言語だと、こうやって実装の楽なGCと変数引数が混在できますが、 >コピーコンストラクタを好き勝手に書けるC++だと難しそうではあります。 >C#では、=でコピーコンストラクタが動くわけではなかったですよね。確か。 >
spamよけのため、ここに「ほげぴよ」と入力してください。
削除パスワード :
クリック!