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