ようこそ ゲスト さん、新規登録(無料)して気になる疑問を解決しませんか?

質問

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

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

void test(AA &a)
{
pointer_test( ??? );
}
困り度:
  • すぐに回答を!
質問投稿日時:
08/05/04 01:09
この質問に対する回答は締め切られました。

回答良回答10pt

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

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

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

例えば、test(&a) という関数呼び出しを見れば、プログラマはその関数プロトタイプを確認して、const がつかない void test(AA*) のような宣言かどうかを気にするのではないでしょうか?
回答者:koko_u_
種類:アドバイス
どんな人:一般人
自信:参考意見
回答日時:
08/05/04 05:28
この回答へのお礼この回答にお礼をつける(質問者のみ)

回答良回答20pt

ANo.1 pointer_test( &a );

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

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

メリットは見やすいこと。デメリットは特にないと思います。
しいて言うと、ポインタで受けるのと参照で受けるのを無原則に使うと混乱しやすいと言うことでしょうか(参照自体のデメリットではないですけど)。
回答者:notnot
種類:回答
どんな人:一般人
自信:自信あり
回答日時:
08/05/04 01:50
この回答へのお礼この回答にお礼をつける(質問者のみ)