-3

関数の参照はやや混乱します。関数定義で引数として 1 つを入れてから、後で使用するときに引数として非参照非ポインター値を入れることができます。そして、私はこれについて考えました:

int foo (int& bar)
{
    //Code
}

//More code...

int* a = &b;
c = foo (a);

何が起こるのですか?foo は a、b、または何を使用しますか? いずれかの使用を強制するにはどうすればよいですか?

4

2 に答える 2

2

自分でテストしてみませんか?迷ったらコンパイルしてみよう!

それは機能せず、意味があります-foo()タイプのパラメーターを要求していますint&-への参照intですが、それにポインターを渡そうとしています。あなたが得るエラーは次のようなものです

cannot convert parameter 1 from 'int *' to 'int &'

ご質問について

いずれかの使用を強制するにはどうすればよいですか?

関数はパラメーターとして aintを受け入れるため、現在、渡された値を変更できreferenceます。

関数で引数を変更できないようにする場合は、署名を次のように変更します

int foo (int bar)

または、パラメータを への参照に変更しますconst int

int foo (const int& bar)

于 2013-08-16T01:31:19.290 に答える