[英]In C++, where is std::cin object defined?
在C ++中,istream對象std::cin
在頭文件<iostream>
聲明,但它在哪里定義?
如果定義的內容不是標准規定的,那完全取決於實施。
這是我的地方:
$ nm -C /usr/local/lib64/libstdc++.so.6 | grep -w cin
0000000000305900 B std::cin
您正在使用的實現以某種形式提供它們。 關於它們在運行時的位置的具體細節是實現定義的,但是對它們的訪問是標准定義的。 它們的生命和行為同樣由標准定義:
C ++11§27.4.1(2)
構造對象並在第一次構造類ios_base :: Init的對象之前或期間的某個時間建立關聯,並且在任何情況下在
main
開始執行之前建立關聯。 294程序執行期間不會銷毀對象。 295在翻譯單元中包含<iostream>
的結果應該好像<iostream>
定義了具有靜態存儲持續時間的ios_base::Init
的實例。 類似地,整個程序應該表現得好像至少有一個具有靜態存儲持續時間的ios_base::Init
實例。
在由編譯器驅動程序自動鏈接到可執行文件的庫中(例如g++
或clang++
)。
它是一個類istream
的對象。 因此,當您使用cin
您只需創建一個istream
類型對象。 它具有外部鏈接和靜態持續時間。
標准輸入流是由環境確定的字符源。 通常假設是從外部源輸入,例如keyboard
或file
。
作為類istream
的對象,可以使用提取運算符( operator>>
)將字符檢索為格式化數據,也可以使用諸如read
成員函數作為無格式數據檢索字符。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.