[英]c++ implicit class member initialization for (POD struct, POD class and POD) members
[英]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.