あなたの「必」の書き順を教えてください

参照型で受け取った引数をポインター型に渡す場合は、
どのようにすればよいのでしょうか?
私は参照型の理解がすっぽりぬけています。
参照型はC++で導入された方法で、何がメリットで何がデメリットでしょうか?

void pointer_test(AA *b)
{
...
}

void test(AA &a)
{
pointer_test( ??? );
}

A 回答 (2件)

pointer_test( &a );



ですね。a は AA型なので、AAへのポインタを渡すに&を付けるのは普通の変数と同じです。

>何がメリットで何がデメリットでしょうか?

メリットは見やすいこと。デメリットは特にないと思います。
しいて言うと、ポインタで受けるのと参照で受けるのを無原則に使うと混乱しやすいと言うことでしょうか(参照自体のデメリットではないですけど)。
    • good
    • 0

参照型を引数にすることのデメリットはその関数呼び出しを見ただけでは、参照渡しをしているのか値渡しをしているのかわからないことではないでしょうか?



例えば、test(a); という関数呼び出しを見たときに、test() のプロトタイプが void test(AA&) なのか、void test(AA) なのかわかりませんが、たいてい後者だと思う傾向にあります。

参照渡しされた変数の内容がその副作用で変更されるような場合には、参照渡しでなくポインタで渡した方がよいように思われます。

例えば、test(&a) という関数呼び出しを見れば、プログラマはその関数プロトタイプを確認して、const がつかない void test(AA*) のような宣言かどうかを気にするのではないでしょうか?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報