-Code in C++Was passiert, wenn wir ein Objekt deklarieren und zuweisen auf ein anderes Objekt der gleichen Klasse
class FirstClass
{
public:
int var;
};
int main()
{
FirstClass A, B;
A.var = 10;
B.var = 20;
cout << "Address of A : " << &A << endl;
cout << "A.var : " << A.var << endl << endl;
cout << "Address of B : " << &B << endl;
cout << "B.var : " << B.var << endl << endl;
A = B;
cout << "Address of A : " << &A << endl;
cout << "A.var : " << A.var << endl << endl;
cout << "Address of B : " << &B << endl;
cout << "B.var : " << B.var << endl << endl;
}
OutPut:
Adresse von A: 0x28fefc
A.var: 10
Adresse B: 0x28fef8
B.var: 20
Adresse von A: 0x28fefc
A.var: 20
Adresse B: 0x28fef8
B.var: 20
Ich weiß, was mit dem Speicher vor sich geht und Wert von var. Keine Verwechslung mit dem obigen Code. Punkt ist, dass der Speicher unterschiedlich bleibt und sich die beiden Objekte immer noch auf die gleichen alten Speicherorte beziehen. Bedeutet keine nicht referenzierte Erinnerung.
Code in Java;
tun, was ich oben in C++ - Code getan habe. Warum dieses Mal Müllsammler in Aktion tritt und indem wir A = B machen, warum wir eine nicht referenzierte Erinnerung bekommen.
In Java wird A = B auf das Objekt zeigen, auf das aktuell gezeigt wird B. Es macht das ursprüngliche Objekt, auf das A verweist, nicht referenziert, was für die Speicherbereinigung geeignet ist. –