関数の参照はやや混乱します。関数定義で引数として 1 つを入れてから、後で使用するときに引数として非参照非ポインター値を入れることができます。そして、私はこれについて考えました:
int foo (int& bar)
{
//Code
}
//More code...
int* a = &b;
c = foo (a);
何が起こるのですか?foo は a、b、または何を使用しますか? いずれかの使用を強制するにはどうすればよいですか?
自分でテストしてみませんか?迷ったらコンパイルしてみよう!
それは機能せず、意味があります-foo()
タイプのパラメーターを要求していますint&
-への参照int
ですが、それにポインターを渡そうとしています。あなたが得るエラーは次のようなものです
cannot convert parameter 1 from 'int *' to 'int &'
ご質問について
いずれかの使用を強制するにはどうすればよいですか?
関数はパラメーターとして aint
を受け入れるため、現在、渡された値を変更できreference
ます。
関数で引数を変更できないようにする場合は、署名を次のように変更します。
int foo (int bar)
または、パラメータを への参照に変更しますconst
int
。
int foo (const int& bar)