Ich habe ein kleines Code-Snippet, das versucht, "< <" Operator von Std :: Cout zu überlasten.Überladen << Operator mit ostream funktioniert nicht. Warum?
#include<iostream>
using namespace std;
ostream& operator<<(ostream& out,const string& str)
{
out << "overloading" << str << "done";
return out;
}
int main()
{
cout << "string123";
}
Ausgabe: string123. Es scheint, dass meine Überladungsfunktion nicht aufgerufen wird. Warum?
Vielleicht, weil es schon * ist * [eine Überlastung des Ausgabeoperator] (http: //en.cppreference.com/w/cpp/string/basic_string/operator_ltltgtgt), das eine 'std :: string 'akzeptiert? –
@JoachimPileborg Wahrscheinlicher, eine, die 'const char *' akzeptiert. – juanchopanza
@JoachimPileborg Die Überladung, die 'std :: string 'akzeptiert, ist in' 'header definiert, was hier eindeutig nicht enthalten ist. –