- ベストアンサー
参照型で受け取った引数をポインター型に渡す方法
参照型で受け取った引数をポインター型に渡す場合は、 どのようにすればよいのでしょうか? 私は参照型の理解がすっぽりぬけています。 参照型はC++で導入された方法で、何がメリットで何がデメリットでしょうか? void pointer_test(AA *b) { ... } void test(AA &a) { pointer_test( ??? ); }
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
pointer_test( &a ); ですね。a は AA型なので、AAへのポインタを渡すに&を付けるのは普通の変数と同じです。 >何がメリットで何がデメリットでしょうか? メリットは見やすいこと。デメリットは特にないと思います。 しいて言うと、ポインタで受けるのと参照で受けるのを無原則に使うと混乱しやすいと言うことでしょうか(参照自体のデメリットではないですけど)。
その他の回答 (1)
- koko_u_
- ベストアンサー率18% (459/2509)
回答No.2
参照型を引数にすることのデメリットはその関数呼び出しを見ただけでは、参照渡しをしているのか値渡しをしているのかわからないことではないでしょうか? 例えば、test(a); という関数呼び出しを見たときに、test() のプロトタイプが void test(AA&) なのか、void test(AA) なのかわかりませんが、たいてい後者だと思う傾向にあります。 参照渡しされた変数の内容がその副作用で変更されるような場合には、参照渡しでなくポインタで渡した方がよいように思われます。 例えば、test(&a) という関数呼び出しを見れば、プログラマはその関数プロトタイプを確認して、const がつかない void test(AA*) のような宣言かどうかを気にするのではないでしょうか?