Wenn wir zwei Strings ohne strcmp()
Funktion vergleichen wollen, können wir dann ==
Operator überladen, um zwei Strings zu vergleichen?Können wir den Operator'== `in C++ überladen, um zwei Strings zu vergleichen?
Antwort
Ich nehme an, Sie wollten operator==
mit c-style String überlasten, dann ist die Antwort No. Die operator overloading soll zum Anpassen von Operatoren für Operanden benutzerdefinierte Typen verwendet werden.
Vom Standard $ 13.5/6 Überladene Operatoren [over.oper] (Hervorhebung von mir)
Eine Operatorfunktion muss entweder eine nicht-statische Member-Funktion oder eine Nicht-Mitglied Funktion sein, die hat mindestens ein Parameter vom Typ eine Klasse, ein Verweis auf eine Klasse, eine Aufzählung oder eine Referenz auf eine Aufzählung.
Hinweis, wenn Sie std::string
gemeint, ist die Antwort immer noch No. STL hat die Implementierung von operator==
für std::string
bereitgestellt und Sie können es nicht ändern. In der Tat, Sie müssen es überhaupt nicht überladen, nur die Verwendung wird in Ordnung sein.
EDIT
Wenn Sie es für Ihre eigene Klasse zu überlasten wollen, ist es in Ordnung. Wie
Class X {
//...
};
bool operator==(const X& lhs, const X& rhs) {
// do the comparison and return the result
}
dann
X x1, x2;
//...
if (x1 == x2) {
//...
}
Ich meine, wenn ich eine Klasse mit einem Char-Array als Datenelement mache und ich mache zwei Objekte dieser Klasse. Dann kann ich diese Objekte durch Überladen '==' ?? – a874
@ a874 Natürlich können Sie. Implementiere es einfach. – songyuanyao
@ a874 Ja, Sie können, aber Sie brauchen nicht, denn es gibt 'std :: string'. – user2807083
es nicht bereits überlastet?
#include<iostream>
#include<cstring>
int main()
{
std::string a = "Ala";
std::string b = "Ala";
if(a==b)
std::cout<<"same\n";
else
std::cout<<"but different\n";
}
Der obige Code für mich gearbeitet (Codeblocks)
- 1. Operator in C++ überladen
- 2. Strings in zwei Dateien in C vergleichen;
- 3. Können wir sprintf in g ++ - Implementierung überladen?
- 4. C++: Überladen Operator =
- 5. C++ statischer Operator überladen
- 6. Monitor mit Operator überladen C++
- 7. Vergleichen Sie zwei XML-Strings Element, um
- 8. Vergleichen verschachtelte innere Klasse durch Überladen von Operator C++
- 9. Was ist der richtige Weg, um den Operator == für eine Klassenhierarchie zu überladen?
- 10. Können wir die Hauptmethode in Java überladen?
- 11. Ist dieser Code korrekt, um den Vergleichsoperator zu überladen?
- 12. Operator überladen []
- 13. Operator überladen für C++ - Karten
- 14. Was ist der effizienteste Weg, um zwei Strings zu vergleichen?
- 15. C++ + Operator, um eine Überlastung zu immer Strings jeder Art
- 16. Operator [] Überladen in mehrdimensionalen Arrays C++
- 17. Platzhalter überladen, um den Wert zu übernehmen
- 18. && Operator überladen und Zuweisungen in C# - Klarstellung?
- 19. Überladen ** in C++
- 20. Wie überladen Sie den Minus-Operator in C++?
- 21. Warum können wir "=" nicht mit der Friend-Funktion überladen?
- 22. Überladen Additionszuweisungsoperator in C++ für zwei/mehr als zwei Objekte?
- 23. Vergleichen Sie zwei Strings Arrays
- 24. überladen ++ Operator arbeitet nicht in C++
- 25. Können wir das Verhalten des Klassenobjekts überladen
- 26. Operator == überladen vergleicht nicht
- 27. Überladen von Operator in C++ und Dereferenzierung
- 28. << Operator vs. überladen + Operator für Zeichenfolgen in C++
- 29. Operatoren überladen in C++
- 30. Können wir Code optimieren, um den Stromverbrauch zu reduzieren?
'operator ==' ist bereits überlastet für 'std :: string';). So könnten Sie etwas wie 'std :: string (str1) == std :: string (str2)' machen. – 101010
Sie können Ihren eigenen Namespaces weitere Überladungen hinzufügen. –