2015-04-22 151 views
0

我是一個新的C++學生,很難理解蒸汽輸入/輸出。C++流/類模板/實例

我實際上是從一本書中學到的,我發現下面這些讓我困惑的線。

「iostream庫提供了許多模板來處理通用I/O操作。例如,類模板basic_ostream支持流輸出操作...。」

那麼,這是否意味着basic_ostream被定義爲:

template <class basic_ostream> 

在下一節中,我會看到「預定義對象cout是一個ostream實例,並且被稱爲」連接到「標準輸出設備,通常是顯示屏。

因此根據上述說法,我認爲以下是正確的。

template <class basic_ostream> 

class ostream { 
    basic_ostream cout ("some value"); 
} 

這是混淆了我很多,因爲在後面的章節中,該書開始討論把功能...

cout.put('A'); 

這意味着COUT實際上是一類對象,而不是一個實例類。 我只是混淆了'實例?'的定義。 請幫忙!!!

回答

0

涉及的模板參數處理從流中讀取/寫入的字符的類型。

COUT(和CIN,CERR,堵塞)是這樣的:

namespace std { 
    basic_ostream<char> cout; 
    basic_ostream<char> cerr; 
    basic_ostream<char> clog; 
    basic_istream<char> cin; 
} 

也有讀取和寫入寬字符版本:

namespace std { 
    basic_ostream<wchar_t> wcout; 
    basic_ostream<wchar_t> wcerr; 
    basic_ostream<wchar_t> wclog; 
    basic_istream<wchar_t> wcin; 
} 

因此,這些標準流的是一個類的實例,其中類是一個模板實例化的字符類型,從該流讀取/寫入該流。

對於它的價值,另一點:還有另一個叫std::ios_base::Init類型,以前main開始執行創建這些實例,並破壞它們一段時間後main結束執行。

+0

首先,感謝您的迴應! ;)我仍然沒有理解這個概念。那麼,在'namespace std {},'內會有一個處理流的類,並且在該類中會顯示cout,cerr,clog和cin?或者你說cout,cerr,clog和cin本身就是課程嗎?如果是這樣,爲什麼沒有'class'關鍵字? – GrinNare

+0

@GrinNare:否 - cin,cout,clog和cerr是對象 - 類的實例。 –

+0

所以... cout將是basic_ostream類的對象,它接受char或wchar_t的值?我對麼? – GrinNare