8
Ich habe folgenden Code in „Die Programmiersprache C++, 4. Auflage“ gefunden, Kapitel 17.5.1.3C++ geteilt verwickelt Zeiger
struct S2 {
shared_ptr<int> p;
};
S2 x {new int{0}};
void f()
{
S2 y {x}; // ‘‘copy’’ x
∗y.p = 1; // change y, affects x
∗x.p = 2; // change x; affects y
y.p.reset(new int{3}); // change y; affects x
∗x.p = 4; // change x; affects y
}
ich nicht die letzte Bemerkung verstehen, sollte in der Tat yp zu einem neuen Punkt Speicheradresse nach dem Reset() -Aufruf, und so
∗x.p = 4;
sollte yp unverändert lassen, ist es nicht?
Danke
Klirren andere Meinung zu sein scheinen [es sagt yp 3 am Ende ist] (http://coliru.stacked-crooked.com/a/c687c657a22cb323) – Borgleader
Es ist ein großes Buch gibt es zwangsläufig zu falschen Beispielen, siehe meine letzte [Frage hier für ein anderes Beispiel] (http://stackoverflow.com/q/27158812/1708801) wie Bjarne sagt [hier] (http: //www.stroustrup. com/4.html) * Fühlen Sie sich frei, mir vorgeschlagene Errata zu senden. Ich werde jeden Fehler beheben, der innerhalb der Beschränkungen des Buches behoben werden kann *. Wie Sie ihn erreichen können, finden Sie auf der [Hauptseite] (http://www.stroustrup.com/). –