[英]Usage of Uniform Initialization Syntax
如果我有課
class Foo
{
public:
Foo();
Foo(int bar);
private:
int m_bar;
}
這兩種初始化成員的方式有什么區別
Foo::Foo(int bar):
m_bar(bar)
{
}
Foo::Foo(int bar):
m_bar{ bar }
{
}
在代碼審查中,我被告知要使用統一初始化語法,即括號初始化。 在這種情況下有區別嗎? 還是僅僅是樣式偏好?
如果是簡單類型,例如int ,則沒有區別。 但是,從STL初始化std :: vector會完全不同
std::vector<int> v1(3,1); // v1 consists of: 1, 1, 1
std::vector<int> v2{3,1}; // v2 consists of: 3, 1
看看這個答案 ,如果你想知道為什么一般括號{}初始化是更好的,但是從斯科特·邁爾的書有效的現代C ++,我強烈建議引用:
[...]那么,為什么該商品的標題不是“首選支撐初始化語法”呢? 初始化初始化的缺點是伴隨它有時令人驚訝的行為。 [...]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.