Klasse Operatoren

Machte ich die folgenden Operatoren überladen test:

#include <iostream>
#include <string>

using namespace std;

class TestClass
{
    string ClassName;

    public:

    TestClass(string Name)
    {
        ClassName = Name;
        cout << ClassName << " constructed." << endl;
    }

    ~TestClass()
    {
        cout << ClassName << " destructed." << endl;
    }

    void operator=(TestClass Other)
    {
        cout << ClassName << " in operator=" << endl;
        cout << "The address of the other class is " << &Other << "." << endl;
    }
};

int main()
{
    TestClass FirstInstance("FirstInstance");
    TestClass SecondInstance("SecondInstance");

    FirstInstance = SecondInstance;
    SecondInstance = FirstInstance;

    return 0;
}

Dem Zuweisungsoperator verhält sich wie erwartet, die Ausgabe der Adresse von der anderen Instanz ist.

Nun, wie würde ich eigentlich zuweisen etwas von der anderen Instanz? Zum Beispiel so etwas wie dieses:

void operator=(TestClass Other)
{
    ClassName = Other.ClassName;
}
  • Sie brauchen auch keine, aber es sieht immer noch seltsam, dass man einen Zuweisungsoperator und einen Destruktor, aber kein copy-Konstruktor. Gemäß der Regel von Drei, wenn Sie benötigen, müssen Sie wahrscheinlich alle drei.
  • Natürlich. Dies ist nur eine test-code, though.
  • Noch, Reflexe kick, wenn ich sehe, dass. Ich habe auch bemerkt, dass Sie an einem std::string Objekt pro Exemplar statt const Referenz. Möchten Sie vielleicht zu Lesen this.
InformationsquelleAutor Maxpm | 2010-12-22
Schreibe einen Kommentar