8
我對這些說明符完全感到沮喪,因爲我明白他們自己做什麼,但當我們發現他們彼此使用時很難理解。例如,一些野外代碼中包含 -static,constexpr,const - 它們在一起使用時意味着什麼?
namespace{
static constexpr char const *Hello[] = { "HelloString", "WorldString"};
...
}
這甚至會做什麼?
- 爲什麼在你已經在匿名命名空間中時使用靜態。和類內的靜態是有意義的(除非你寫C缺乏名稱空間),沒有類 - 爲什麼?
- 爲什麼使用constexpr - 這裏沒有理由使用它。會不會簡單
const
會做? - 然後
const *Hello
對我來說沒有意義。這裏常有什麼?字符串或指針*Hello
?
最糟糕的是,它編譯:/。當然,它會編譯,因爲它們是有效的陳述,但它甚至意味着什麼?
constexpr表明它使用C++ 11。瞭解這個靜態代碼很有意義,因爲它會使初始化線程安全。 (魔術靜力學)。並且constexpr使它可以在不適用於const的地方使用。 – Totonga
我不認爲初始化帶有加載的init-list的標量會編譯。 –
爲什麼神奇的靜態和線程安全對於加載時間初始化來說很重要?那裏會發生什麼樣的平行執行? – IanH