的自我初始化通過做這樣的事情已經被咬傷後:避免/警告C++成員
struct Person {
std::string first_name;
std::string last_name;
Person(const std::string &first_name_, const std::string &last_name_) :
first_name(first_name_),
last_name(last_name)
{}
};
當初始化last_name(last_name)
顯然應last_name(last_name_)
請問有什麼辦法可以讓GCC警告這樣的錯誤(是否有任何初始化成員使用自己的用例?)
或者在構造函數參數與字段類似的情況下,有更好的命名約定的建議。
最普遍慣例是一個像「M」(部件)或「F」(場)的信前綴成員。像「mLastName」或「m_last_name」一樣。這不僅因爲這個特定的問題而有用,而且因爲如果它具有前綴,你立即就知道某些東西是成員變量。它也不太可能弄錯; 「_」後綴仍然允許自動完成來提示參數以及成員。有了前綴,這不會經常發生。 –
@NikosC。當我開始編程時,我會在其他任何地方使用它,還有其他匈牙利符號,比如m_pfnFoo,用於函數指針等等。然後作爲一個實驗,我決定擺脫它,並且從不錯過它。我的印象是,當你的課堂精心製作時,它根本沒有任何好處。 – stijn
@stijn我發現它非常有用,特別是在閱讀其他人的代碼時。它使它更容易理解它。使我不經常使用我的IDE的查找功能,這是一件好事:) –