2014-03-12 16 views
0

我一直對namespace std有這樣的疑問。我的結論是,編譯器(g ++)附帶的標準頭文件中的所有類和函數聲明實際上都在名爲'std'的名稱空間內。所以每次開發人員做了一個新的頭文件,他們就會開始像Std :: ios :: in是'in'ios命名空間中的變量嗎?

Namespace std { 

我是對嗎?

是ios ::在ios命名空間的變量中,還是ios是一個類,'in'是某種類型的靜態變量? 如果是,它是否有一個指示打開成員函數打開要讀取的文件的某種整數值?

你是什麼意思的ios標誌?

回答

0

在標準化過程中引入了名稱空間std用於標準化C++標準 庫的所有標識符。所以說 那個命名空間std保留了編譯器附帶的所有類是 correct.Backward兼容也是通過包含C頭文件 提供的。 (示例#include)

ios類派生自ios_base類,它有opening mode flag例如。輸入,輸出等

這些流開口模式標誌是ios_base classstatic const public member,並且可以通過調用它們的名稱作爲ios_base::in或者通過從的ios_base類派生的類直接訪問。 ios類是從ios_base派生的,所以流開放標誌可以被訪問爲ios::in

+0

因此,如果'in'是一個強類型變量,它是ios類的靜態常量公共成員,那麼它的數據類型是什麼?它有價值嗎? – krish

+0

openmodeflag是[BitmaskType](http://en.cppreference.com/w/cpp/concept/BitmaskType)。 BitmaskType是實現定義的,每個[flag](http://en.cppreference.com/w/cpp/io/ios_base/openmode)的值也是實現定義的。所有openmode標誌都屬於'ios_base class'而不屬於'ios class' – HadeS