我在某處看到了下面的代碼片段。
#include <iostream>
int main()
{
std::ostream& os = std::cout;
os << "thanks a lot" << std::endl;
return 0;
}
由于上述代碼片段運行良好,因此表明它std::cout源自std::ostream. 但我還找不到任何直接參考。
根據檔案,它說[強調我的]:
全域物件 std::cout 和 std::wcout控制輸出到與標準 C 輸出流 stdout 相關聯的實作定義型別(派生自 std::streambuf)的流緩沖區。
上面的引文說,std::cout控制輸出到一個派生自std::streambuf而不是std::cout派生自的型別std::streambuf。
而且我只std::cout在一個名為的檔案中找到宣告/usr/include/c /7/iostream:
extern ostream cout; /// Linked to standard output
我找不到std::cout.
uj5u.com熱心網友回復:
ostream是一類。cout是該類的一個實體。
這與class Person {}; Person john;. Person是類,john是該類的一個實體。C 標準庫恰好提前創建了cout這個特定類 ( ostream) 的實體 ( ),配置為寫入標準輸出流。
該行std::ostream& os = std::cout;定義了一個名為 的新變數os,它的型別是ostream&,它是對 的參考ostream。然后它使其成為對已定義變數的參考cout。
uj5u.com熱心網友回復:
由于上述代碼片段運行良好,這表明 std::cout 是從 std::ostream 派生的。
不完全的。該代碼有效,因為std::cout它是一個std::ostream. 無需繼承即可閱讀和理解該代碼示例。
上面的引文說,
std::cout控制輸出到一個派生自std::streambuf而不是std::cout派生自的型別std::streambuf。
這句話是在談論您不需要關心的細節(除非您確實關心它們;)。這個問題的重要部分extern ostream cout; 是ostream cout;這意味著cout是一個型別的實體ostream(并且extern只是表明它只是一個宣告,而(實體的)定義在其他地方,何時在 C 中使用 extern)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/493790.html
