2017-12-18 228 views
0

當我讀The C++ Programming Language 4th Edition,初始化變量中,筆者認爲這是betther使用{}=初始化變量: variable initialization 但我看到有更多的人使用={}
那麼哪種方法是堅持不懈的好原則? ={}
Thx很多!使用大括號({})或等號(=)時初始化變量

+0

就像Bjarne說的那樣,在前30年中,{}'選項不可用,所以舊代碼使用'='。如果你使用這樣的舊代碼,你應該繼續使用'='來保持一致。在新代碼中,您可以選擇使用'{}',並且有一些新功能*是必需的*。因此,一致性... –

+0

你曾經使用過哪一個保持相同,並能夠同時閱讀 –

+0

我們可以告訴你,這本書沒有? – Galik

回答

0

你選擇哪一個取決於你自己的編碼風格。最重要的是,一旦您決定使用哪種方法,請始終使用該方法。不要在兩種方法之間切換。我個人使用(=)符號初始化變量,因爲這是我看到的最常見的變量初始化方法。此外,C的新標準++(C++ 11以後,我相信)允許您初始化變量,像這樣:

int variable(1) 

但我勸你對這樣,它不會在某些工作情況,正如你的書可能涵蓋的那樣。

-3

本書建議使用初始值設定項的一個原因是它成爲初始值。

當使用賦值'='時,在某些情況下,您最終會構造一個給它一個初始值的對象,然後代碼將使用該類類型的賦值運算符來更改初始值,因此效率較低。這只是在某些情況下,取決於可用的構造函數等。

但是,在大多數情況下,現代編譯器可以對其進行優化,使其成爲同一事物。所以這不值得擔心。

C++的一個問題是,無論事情有多簡單,總有幾種方法可以做同樣的事情。

+0

這已經不再是這種情況了:http://en.cppreference.com/w/cpp/language/copy_elision –

+0

是的,你說得對,這就是爲什麼我說大多數現代編譯器都將它優化爲同樣的東西。 –

+0

讓我們面對現實,有很多方法來做同樣的事情的原因是語言的歷史。 –