refPtrInt ist ein Verweis auf Zeiger:Wenn x ein Verweis auf unique_ptr ist, dann ist * x "Verweis auf Element zeigt auf"?
int *& refPtrInt;
Ist *refPtrInt
ein int
oder ein Verweis auf ein int
?
EDIT: Vielen Dank für Ihre Antworten über refPtrInt
. Eigentlich meine ursprüngliche Frage ist zu diesem Ausschnitt aus Stroustrup (einer Tour durch C++, Abschnitt 5.5):
template<typename C, typename 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
}
vector<unique_ptr<Shape>> v;
// populate v with some kinds of Shape
for_all(v, [](Shape& s){ s.draw(); });
Der Kommentar "pass op() a reference to each element pointed to
" von Bjarn Stroustrup ist auch. Also, *x
ist offensichtlich eine Referenz auf eine Shape
, wenn x
ist ein Verweis auf eine unique_ptr<Shape>
... Ist das richtig?
Hinweis: Eine Referenz kann normalerweise als ein anderer Name für ein vorhandenes Objekt und nicht als ein neues Objekt betrachtet werden. –
Beachten Sie, dass diese Frage mit einem Compiler [einfach zu testen] (http://coliru.stacked-crooked.com/a/c517083a24fae1cf) ist. – chris
@chris, die das Verhalten von 'declltype' testet und auch die Frage nicht beantwortet (jemand könnte daraus schließen, dass '* r' den Typ' int & 'hat, obwohl es das nicht tut) –