2016-09-21 61 views
1

我是新來的C++和學習操作符重載。現在在followng代碼中,除了有點困惑外,我得到了一切,爲什麼爲什麼返回類型是對輸出流的引用?爲什麼返回類型引用輸出流?

我們有以下枚舉。

enum days{ SON, SAT, MON, TUE, WED, THRUS, FRI }; 

而且我們重載<<操作,打印天,而不是數值0,1,2 ...等等。

的代碼是:

ostream& operator <<(ostream &,const days &d) 
{ 
switch(d) 
{ 
    case SUN: out << "SUN"; break; 
    case MON: out << "MON"; break; 
    case TUE: out << "TUE"; break; 
    case WED: out << "WED"; break; 
    ..... 
    ... 
} 
return out; 
} 
+0

還有什麼應該是什麼? –

回答

1

對於許多類型的數據,ostream類已經使插入操作符(< <)過載; int,char,char *,string ...

  • 此運算符的返回類型是對ostream對象的引用,所以當您調用它時,您可以使用返回類型打印其他的東西,並打印這個東西的返回類型是一個ostream對象,你可以用它來打印其他的東西等等的參考...

  • 當你寫:

    cout << 1 << "Hello" << 2.7 << endl; 
    

之初COUT打印1,然後返回美國,我們用它來打印「Hello」一個ostream對象(調用< <(ostream的&,炭*)),並再次返回到一個ostream對象的引用所以我們用它來打印2.7等等......

  • 上面的線可以翻譯爲:

    (((cout << 1) << "Hello") << 2.7) << endl; 
    
2

爲什麼返回類型是參考輸出流?

返回ostream&使得能夠鏈它,像

std::cout << SON << SAT << MON << TUE << WED << THRUS << FRI; 

順便說一句:Output stream是不應該(且不能)被複制,所以返回類型是參考(而不是由值) 。