簡體   English   中英

類POD成員變量初始化

[英]Class POD member variable initialization

關於以下兩種初始化POD成員成員變量的方法:

class Trie {
  Trie()
    : isWord_(false)
  { }


  vector<Trie *> child(keyLength);
  bool isWord;
};

// OR 

class Trie {
  Trie();

  vector<Trie *> child(keyLength);
  bool isWord = false;
};

這兩個是否相等(在性能方面,在生成代碼大小方面等)? 當前有偏好嗎?

我將參考本文“了解新的C ++ 11初始化表格”以獲取答案。

正如文章所述,它們在語義上是等效的:

無論使用哪種初始化形式,編譯器都會在概念上將每個類成員初始化程序轉換為相應的mem-init

但是,如果我們超出了POD范圍,則第二個選項允許有些事情對於第一個選項是不可能的。 例如:數組初始化。

至於當前的偏好,總是有一個很強的論據可以使您的代碼對其他人可讀:

  • 如果您正在從事大型項目,請遵循項目其余部分遵循的任何形式,不要在不需要的地方實施新想法
  • 如果您的項目很小,如果您認為一個項目比其他項目更具可讀性,請嘗試與其他最終用戶交談,以商定通用格式。

我個人的喜好仍然是第一選擇,因為有了它,我就可以將所有有關類初始化的信息都放在一個地方(構造函數),而不必一直滾動到最底部以查看是否有人突然在那里進行了默認初始化。 。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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