質問: 参照型で受け取った引数をポインター型に渡す方法 参照型で受け取った引数をポインター型に渡す場合は、 どのようにすればよいのでしょうか? 私は参照型の理解がすっぽりぬけています。 参照型はc++で導入された方法で、何がメリットで何がデメリットでしょうか? void pointer_test(aa *b) { ... } void test(aa &a) { pointer_test( ??? ); }
回答: 参照型を引数にすることのデメリットはその関数呼び出しを見ただけでは、参照渡しをしているのか値渡しをしているのかわからないことではないでしょうか? 例えば、test(a); という関数呼び出しを見たときに、test() のプロトタイプが void test(aa&) なのか、void test(aa) なのかわかりませんが、たいてい後者だと思う傾向にあります。 参照渡しされた変数の内容がその副作用で変更されるような場合には、参照渡しでなくポインタで渡した方がよいように思われます。 例えば、test(&a) という関数呼び出しを見れば、プログラマはその関数プロトタイプを確認して、const がつかない void test(aa*) のような宣言かどうかを気にするのではないでしょうか?