繁体   English   中英

使用私有成员变量作为私有 function 参数

[英]Using private member variable as private function parameter

class C
{
public:
  void clearWithParam()
  {
    clearImage(image, size);
  }
  void clearWithoutParam()
  {
    clearImage();
  }
private:
  unsigned char* image;
  size_t size;

  void clearImage(unsigned char* image, size_t& size)
  {
    for(int i=0; i<size; i++)
    {
      image[i] = 0;
    }
  }

  void clearImage()
  {
    for(int i=0; i<this->size; i++)
    {
      this->image[i] = 0;
    }
  }
}

我发现有两种实现私有方法的方法。 这里的两个clearImage()做同样的事情。 但是第一个以私有成员imagesize作为参数,第二个直接访问私有成员。 哪个更受欢迎?

根据管理 scope 的规则,function 参数优先于同名成员。 由于实例仍然可以访问,因此您仍然可以通过this->image之类的方式访问成员变量。

有些人更愿意尝试避免这种歧义,并建立了一个相当流行的(以至于在某些地方被采用到 c++ 代码质量要求中)的命名约定,即所有成员都以m_前缀开头。 与键入this->并阅读它相比,节省了大量时间。 当代码清晰但同时更适合屏幕时,它也倾向于减少审查所需的滚动。

此外,如果 function 不需要实例中的任何内容,请考虑添加 static 修饰符。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM