C++/CLIをつつく26−引数の参照渡し。時には曖昧にしておくのがベスト。2008-07-22 Tue 11:42
今回は要望があったメソッド引数への参照引き渡しをつつくよ。メソッドへの値の渡し方は、
値引き渡しと
参照引き渡しの2つがあるんだ。
この2つの違いは、代名詞と固有名詞の違いと覚えておくといいピヨ。これはどういうことか現実の話しで例えるピヨ。
値渡しの場合は、「この原価計算報告書を部長に渡してね」と直接対象を指して言っているのと同じなんだ。一方参照渡しの場合は、「この書類部長に渡してね」と間接的に対象を指しているということなんだ。つまり、この2つの言い方の違いは、 替えが可能かどうかなんだ。 先ほどの例で言うと、原価計算報告書と違う書類を渡した時、 値引き渡しの場合は「おいおい○○。これ原価計算報告書じゃないぞ。」と注意されるのに対して、 参照引き渡しの場合は何も言われない。だって「書類」って曖昧に言っているからね。 何故このように2つの引渡し方法がC++/CLIにあるのかというと、 プログラムの柔軟性と 効率性を高めようとしているからなんだよ。 論よりもプログラミング。毎度御馴染みサンプルコードを実行してからよく見て。
どう?値引渡しと参照引渡しどちらが速かった?この状況で参照引き渡しの方が速い理由は 同じ変数を使いまわせるからなんだ。 値引渡しの場合は実行環境が毎回値を作成しているから、何度も使いまわしする場合にはスピードが落ちるんだ。 だから、参照引渡しの使い方をマスターしておくと、より効率がいいプログラムが組めるんだよ。 何度も試してマスターしておこう。 でも正直に言うと、このサンプルのスピードは、引渡し方法だけではなくてボックス化が影響しているんだけど、それについては難しいから今後説明するピヨ。 説明終わり。ということでこの記事は終わり。 ※C#の記事はここで終わっているけど、C++/CLIの場合、コンパイラオプションを最大限の最適化 (/Ox)にした時参照渡しの方が遅くなるから注意してね。 原因は今後調査しようと思っているピヨ。今度は本当に終わり。 |
この記事のコメント |
コメントの投稿 |
||
|
||
管理者だけに閲覧 | ||
|
この記事のトラックバック |
| 無差別に技術をついばむ鳥 |
|