Vergleich zwischen zwei Objekten in der gleichen Klasse
Ich bin noch neu in C++ (Programmierung im Allgemeinen)und mir verzeihen wenn diese Frage dämlich ist oder wurde gebeten, zahlreich.
Hier ist die Frage..sagen wir, es sind zwei Objekte A und B unter dieselbe Klasse.
e.g
class Fruit{
int apple;
int banana;
fruit(int x, int y){
apple=x;
banana=y;
}
}
Fruit A(1,1);
Fruit B(1,1);
Wenn ich will, um zu überprüfen, wenn der Inhalt von Objekt A oder Objekt B ist, muss ich vergleichen jedes variablefrom A nach B, oder
if(Object A == Object B)
return true;
wird die Arbeit machen?
Wie könnte
mögliche Duplikate von Warum nicht C++ - Compiler definieren der operator== und operator!=?
Nicht ganz genau ein dupe, aber ja, IMO sollte es gekennzeichnet werden, da es bereits eine sehr gute Datenbank mit Erklärungen in den verlinkten wegen der Frage...
Ehrlich gesagt, ich kann mir nicht vorstellen, dass es eine guten Grund, warum der compiler entscheidet zur Implementierung einer default-copy-ctor (auch für Klassen mit Zeigern), aber ist stur zum generieren einer Standard -
Ich auch nicht
if(Object A == Object B) return true;
immer die Arbeit machen, wenn es keine chance, kompilieren? Sie implementieren müssen, um operator==
und vergleichen Sie alle Daten, die Mitglieder, die Sie möchten für die Gleichstellung.mögliche Duplikate von Warum nicht C++ - Compiler definieren der operator== und operator!=?
Nicht ganz genau ein dupe, aber ja, IMO sollte es gekennzeichnet werden, da es bereits eine sehr gute Datenbank mit Erklärungen in den verlinkten wegen der Frage...
Ehrlich gesagt, ich kann mir nicht vorstellen, dass es eine guten Grund, warum der compiler entscheidet zur Implementierung einer default-copy-ctor (auch für Klassen mit Zeigern), aber ist stur zum generieren einer Standard -
operator==
. Können Sie?Ich auch nicht
InformationsquelleAutor GalaxyVintage | 2015-05-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
wird die Arbeit machen? Nein ist es nicht, es wird nicht mal kompilieren
Sie implementieren müssen, um einen Vergleich
operator==
wieWenn Sie schreiben
fruit1==fruit2
der compiler übersetzt es infruit1.operator==(fruit2)
. Sooperator==
aufgerufen auf der linken Seite-Instanz wie jede andere Funktion. Der rest, denke ich, klar, innen Sie sind nur der Vergleich von Feld von Feld.Ah ich hab es...vielen Dank für die Hilfe !
Ich Stell die nit, die der Betreiber selbst sein sollte, const.
Ein C++14 trick, um zu vermeiden, dass alle
std::tie
boilerplate - definieren Sie eine weitere member-Funktionauto members() const { return std::tie(...); }
Dann wird der Körper von den oben genannten Betreiber wirdreturn members() == rhs.members();
InformationsquelleAutor vsoftco