D言語 Part23
■ このスレッドは過去ログ倉庫に格納されています
0482デフォルトの名無しさん
2009/11/05(木) 18:55:47>動的配列を関数の引数で受け取り、関数内で配列の中身を書き換えたら、実引数の配列には影響しませんでした。
>これは、refやoutを指定しない限り、配列がコピーされるという事なのでしょうか?
そんなはずはないでしょ。なにか間違えてるよ。
>少し上でも話題になっていますが、phobosがstructで書かれている事も含めて、
>C++での「基本型以外を引数にする時はconst参照」という習慣をDでもやりたくなってきます。
C++と違ってDのclassはもともと参照型なのでコピーのコストを理由に参照で渡す必要は全くないよね。
>でも、コピーのコストが気になるからといってrefをつけていたら、in,out,refの意味論からはずれてしまいますよね?(inが使えない)
inとref/outは意味として全く違うカテゴリに属すからいいんじゃないの。
まあ、このあたりの言語仕様は整理が必要だとは思うけど。
>またconst ref char[]ではstringを受け取れないという問題も発生します。
>どういうスタイルで書けばいいのでしょう?
immutable(T)[]* を const(const(T)[])* に変換できないのは当然だから、意味を考えてオーバーロードするしかないだろうけど、
動的配列は (size_t, void*) 程度の大きさしかないから参照渡しする必要はないと思うよ。
■ このスレッドは過去ログ倉庫に格納されています