2016-05-01 5 views
-1

Beim Schreiben einer Nicht-Element-Funktion, um einen Operator zu überlasten, entspricht der 1. Parameter dem linken Operanden und der 2. Parameter dem rechten Operanden?Operatoren überladen: Entspricht der 1. Parameter dem linken und der 2. dem rechten Operanden?

Ich habe versucht, die „< <“ Betreiber zu überlasten es wie folgt zu verwenden:

stream << ClassA << ClassB 

Im Folgenden ist ein Beispiel, wo FeetInches ist eine Klasse mit Membervariablen feet und inches.

ist, warum dieser Parameter arbeitet, um:

ostream &operator<<(ostream &strm, const FeetInches &obj) 
{ 
    strm << obj.feet << " feet, " << obj.inches << " inches"; 
    return strm; 
} 

-

aber dieser Parameter, um nicht funktioniert?

ostream &operator<<(const FeetInches &obj, ostream &strm) 
{ 
    strm << obj.feet << " feet, " << obj.inches << " inches"; 
    return strm; 
} 

Antwort

2

ostream kommt 1. wie wir es hier nicht Gegenstand jede rufenden haben.

ostream &operator<<(ostream &strm, const FeetInches &obj) 
{ 
    strm << obj.feet << " feet, " << obj.inches << " inches"; 
    return strm; 
} 

als cout<<obj<<endl; als operator<<(cout,obj); interpretiert werden.

3

Ja, alles funktioniert wie du gesagt hast.

Verwandte Themen