2016-07-15 80 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

那就解釋一下吧。順便說一句,代碼是直接從書中,不是我的。我想這個評論在我頭上。 –