2016-05-01 239 views
-1

當編寫非成員函數來重載一個操作符時,第一個參數是否對應於左操作數,第二個參數是否對應右操作數?重載操作符:第一個參數對應左操作數,第二個參數對應右操作數?

我試圖超載「< <」操作者使用這樣的:

stream << ClassA << ClassB 

下面是一個例子,其中FeetInches是成員變量類feetinches

這就是爲什麼這個參數順序工作:

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

-

但這個參數順序不起作用?

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

回答

2

ostream第一,因爲我們在這裏沒有任何調用對象。

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

cout<<obj<<endl;將被解釋爲operator<<(cout,obj);

3

是的,這一切都如你所說。

相關問題