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)
'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. –