2016-07-15 25 views
0

私は、「C++プログラミング言語(第4版)」を読んでいると私はこれに走った:間接参照参照

template<class C, class Oper> 
void for_all(C& c, Oper op) // assume that C is a container of pointers 
{ 
    for (auto& x : c) 
     op(*x); // pass op() a reference to each element pointed to 
} 

だから、私が理解、我々はcを反復処理し、への参照を取得しているから、 x、これは現在の反復です。 xは、opという関数呼び出し演算子に渡されますが、最初に逆参照されますか? xを逆参照するのはなぜですか?

+2

「C」がポインタのコンテナであるとのコメントを参照してください。どうやら 'op()'はポインタを望まないので、ポインタが指す値が必要です。だから間接的にする必要があります。 – Barmar

答えて

4

あなたは投稿のコード内のコメントで述べている:

// assume that C is a container of pointers 

xがポインタへの参照であることを意味します。 *xは、ポインタが指すオブジェクトと評価します。

opは、オブジェクトへのオブジェクトまたは参照ではなく、オブジェクトへの参照を期待する必要があります。

+1

それでは、それについて説明します。ちなみに、コードは本からまっすぐで、私のものではありません。私のコメントは私の頭の上にあったと思う。 –