[英]Is using the same variable in a class ok to use in the constructor C++?
如果我上課:
class className{
int i;
public:
className(int value);
};
按照以下選擇,從構造函數初始化類變量“ i”的最佳實踐是什么?
1)使用帶下划線的實際字段名稱:
className::className(int i_){
i = i_;
}
2)將實際的字段名稱與“ this”一起使用:
className::className(int i){
this->i = i;
}
3)完全不一致的事情,例如:
className::className(int value){
i = value;
}
我已經看到這個問題直接針對Java解決,但對於C ++則沒有那么多。 我問是因為我更喜歡數字2,因為我個人更喜歡使用較少的變量名。 但是,我想知道這對編譯器或鏈接器等可能意味着什么。我還想堅持使用C ++規范。
非常感謝!
是的,沒關系。
有些人實際上認為它是慣用的。
但是,您的示例都缺少初始化列表的使用方法:)
class className{
int i;
public:
className(int value) : i(value) {};
};
我建議避免名稱重復。 如果您不小心弄亂了代碼,它會使編譯器抱怨。
最佳實踐是在初始化列表中初始化成員變量:
className::className(int i_) : i(i_){}
^^^^^
原因 :
const
合格的成員:與2相同。 至於命名問題:恕我直言,它主要基於意見。 就個人而言,對於構造函數的參數,我也使用后綴下划線。
我同意@sehe,以澄清他的初始化列表的上下文:
className::className(int i_) : i(i_) {}
然而! 我認為標識符名稱在適當性方面是倒退的。 i_應該是私有成員變量,而i應該是構造函數參數。
我對每個“選擇”的注釋:1)在這里很容易看出哪些參數彼此對應2)在這里很明確3)我認為您已經通過措辭“完全不一致”來總結您的觀點:)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.