Die Adresse des class-s-Objekt in C++?
Angenommen ich habe eine C++ - Klasse wie folgt:
class Point {
//implementing some operations
}
Dann:
Point p1;
Point p2 = p1;
Wenn ich wissen will, die Adresse von p2, den ich dann verwenden kann &p2
. Aber wie bekomme ich die Adresse, p2 speichert? Denn p2 ist nicht ein Zeiger, so kann ich nicht nur nutzen cout << p2;
- huh? p2 speichert keine Adresse, da es keine Zeiger. Es speichert Benutzer-definierten Daten (es sind member-Variablen).
Du musst angemeldet sein, um einen Kommentar abzugeben.
Was falsch mit der folgenden:
Wie Sie sagen,
p2
ist kein Zeiger. Konzeptionell ist es ein block von Daten gespeichert, die irgendwo im Speicher.&p2
ist die Anschrift von diesem block. Wenn Sie das tun:...dass die Daten kopiert, um den block 'bezeichnet'
p1
.Es sei denn, Sie fügen einen Zeiger Mitglied der
Point
Daten-Struktur ist, kann es nicht speichern eine Adresse. Als Sie sagte, es ist nicht ein Zeiger.P. S. Die hex stream-Betreiber nützlich sein könnten, zu:
char
.By doing
Sie einfach kopieren Sie die Werte von p2 auf p1 (höchstwahrscheinlich). Der Speicher ist unabhängig.
Wenn du hast, statt:
dann p2 wird ein Zeiger auf p1 (Druck, seinen Wert geben Sie den Anfang des Speicherblocks, könnten Sie dann versuchen, sizeof, um die Größe des Blocks).
sizeof
(kein Unterstrich) und trotzdem können Sie die Größe des Objekts mitsizeof(Point)
odersizeof p1
sowiesizeof *p2
für den Zeiger-version davon. Cheers.