Return das aktuelle Objekt (*this) in C++?

Ich habe den folgenden code:

Code 1

class Student {
     int no;
     char grade[M+1];
 public:
     Student() {
         no = 0;
         grade[0] = '\0';
     }
     void set(int n, const char* g) {
         no = n;
         strcpy(grade, g);

     }
     const Student getObject() {
         return *this;
     }
     void display() const {
         cout << no << ", " << grade << endl;
     }
 };

Code 2:

//no change from code 1
const Student& getObject() {
         return *this;
     }
//no change from code 1

Als das Buch, das ich Lesen, erklärt den Unterschied in der getObject() der code 1 und 2 ist, dass die getObject () - code 2 liefert eine Referenz auf das aktuelle Objekt, statt einer Kopie (aus Effizienzgründen).

Jedoch, die ich getestet habe (code 2) wie folgt:

Getesteten code:

Student harry, harry1;
    harry.set(123, "ABCD");

    harry1 = harry.getObject();
    harry1.set(1111,"MMMMMM");
    harry.display(); //Line 1 => displayed: 123, ABCD
    harry1.display(); / Line 2 => displayed: 1111, MMMMMM

Ich bekomme es nicht. Wenn Sie die getObject() liefert eine Referenz, dann die Linie 1 in den getesteten code sollte auch anzeigen, 111, MMMMMM? Weil ich dachte, dass harry1 sollte die Adresse von harry-Objekt???
Oder bin ich Missverständnis, was?

  • Es ist nicht nur für Effizienz. Manchmal ist ein kopieren nicht möglich ist.
  • re alle Vorschläge zu ändern harry1 zu Student& - das wird nicht funktionieren, wie getObj() gibt eine const ref Student, so würde nicht kompilieren.
  • Lesen Sie über die Zuweisungs-operator. Sie verwenden es, wie dieser harry1 = harry.getObject();. Kopien eines Objekts mit dem Wert zu einem anderen Objekt.
InformationsquelleAutor ipkiss | 2011-05-11
Schreibe einen Kommentar