这似乎是一个非常简单的问题,但是我一直无法找到任何意见。用C ++编写setter时,
有什么区别void ClassName::set_member( type value ) {
ClassName::member = value;
}
和
void ClassName::set_member( type value ) {
this->member = value;
}
CLion生成了第一个版本,因此我怀疑它具有某些优势,但是我不知道那会是什么。
答案 0 :(得分:1)
区别纯粹是语法上的。两种版本的效果完全相同。 member
是静态还是非静态都没有关系。只能从静态成员函数内部使用this->
版本,因为没有对象,因此也没有this
。
因为感觉很奇怪,所以需要重复:即使member
是 static 成员变量,this->member = value;
也是有效的,并且做对了。
关于偏好一种样式而不是另一种样式:就像所有高度主观的风格选择一样。明确的答案实际上是不可能的。但是总的来说,有些指标表明C ++社区更喜欢什么。您可能会看:
考虑到所有我有信心地说,流行风格不是你们两个的全部,而是:
member = value;
纯属个人观点:对于非静态成员,ClassName::
版本感到不熟悉,在某种程度上,我会在代码审查中指出它。 this->
通常让我怀疑“这是Java程序员编写的吗?”,但是总体而言-尤其是如果使用得一贯的话-这是一个不错的风格,尽管不寻常。在某些特殊的模板元编程环境中,甚至是强制性的。