二传手中的样式首选项:类::成员 = 值还是这个>成员 = 值?



这似乎是一个非常简单的问题,但我无法找到任何意见。用C++写二传手时,两者有什么区别

void ClassName::set_member( type value ) {
ClassName::member = value;
}

void ClassName::set_member( type value ) {
this->member = value;
}

CLion 生成了第一个版本,所以我怀疑它有一些优势,但我看不出那会是什么。

区别纯粹是语法上的。两个版本具有完全相同的效果。member是静态的还是非静态的都无关紧要。仅从静态成员函数内部,您不能使用this->版本,因为没有对象,因此没有this

因为它感觉真的很奇怪,所以值得重复:即使member是一个静态成员变量,this->member = value;也是有效的并且做正确的事情。

至于偏爱一种风格而不是另一种风格:就像所有风格选择一样,这是高度主观的。一个明确的答案实际上是不可能的。但是,C++社区总体上更喜欢什么,也有人提出质疑。您可能会看到:

  • GitHub 等上的开源C++代码,或您的标准库实现
  • 来自
  • 主要会议的演示幻灯片上的代码片段,如 CppCon、Meeting C++、C++ Now 等。
  • 主要C++书籍,例如Stroustroup的The C++ Programming Language或Scott Meyers的有效C++系列

考虑到所有这些,我有信心说流行的风格不是你的两个,但是:

member = value;

纯粹是个人而言:对于非静态成员,ClassName::版本感觉很陌生,以至于我会在代码审查中指出它。this->通常让我想知道"这是Java程序员写的吗?",但总的来说 - 特别是如果它被一致地使用 - 这是一种不错的风格,尽管不寻常;在一些特殊的模板元编程中,它甚至是强制性的。

最新更新