簡體   English   中英

統一初始化語法的用法

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM