C ++ Gleicher Bediener definiert vom Compiler automatisch neuC++

Programme in C++. Entwicklerforum
Guest
 C ++ Gleicher Bediener definiert vom Compiler automatisch neu

Post by Guest »

Ich denke, die Frage ist ziemlich einfach und kann in wenigen Worten wie "Welchen Bediener überlastet der Compiler automatisch geschrumpft?"
Ich habe eine Vorstellung davon Einige Details in der Lage, mich zu erklären, warum < /strong> es funktioniert wie es. Ich bin mir ziemlich sicher, dass jemand von Ihnen mir helfen kann, herauszufinden, was passiert.class MyPair : public pair
{
public:
MyPair()
{
pair();
}
};
< /code>

Bisher nichts von Seltsamen, wie im Thread
weithin diskutiert werden, was sind alle von Compiler für eine Klasse erstellten Mitgliederfunktionen? Passiert das ständig? Aber kein Standardkonstruktor < /strong> Nur weil ich meine eigene neu definiert habe. Zuweisungsoperator direkt nach der Erstellung eines Objekts, wie hier gezeigt: < /p>

//default copy constructor
MyPair mypair1 = mypair;
MyPair mypair2;
//default assignment operator
mypair2 = mypair1
< /code>

Bisher funktioniert alles wie entworfen. folgt: < /p>

int main()
{
pair aPair;
MyPair mypair;
string mystring("test");
//ERROR
mypair = mystring;
return 0;
}
< /code>

Bevor ich diese Codezeile getestet habe, hatte ich erwartet, dass der Compiler sich darüber beschwert hätte (weil ich ihm keine explizite Überlastung des operator = < /strong>, so ist selbst nicht in der Lage, dem erstellten Objekt eine Zeichenfolge zuweisen), und tatsächlich gab es mir einen ziemlich selbstleichenden Fehler zurück, wie: < /p>

test.cpp:36:13: error: no match for ‘operator=’ in ‘mypair = mystring’
test.cpp:36:13: note: candidate is:
test.cpp:7:7: note: MyPair& MyPair::operator=(const MyPair&)
< /code>

Stellen Sie sich nun vorMyPair(const string& astring)
{
pair(astring,string());
}
< /code>

Plötzlich beginnt der Code zu kompilieren, ohne mehr Fehler zu geben. Klugheit; Es begann, die fehlende mypair & mypair :: operator = (const String & s) < /strong>. < /p>

Ich muss zugeben, dass es wirklich brillant klingt, aber Ich kann nicht genau verstehen, warum es passiert. Kopieren Sie zuweisen
in die angegebene Referenz nur wegen deses?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post