c++ - C++ 中相同的类成员名称和函数参数名称

标签 c++ arguments naming members

我有一个包含一些[公共(public)]数据的简单对象。

我想保持我的界面干净,所以我不想对可公开访问的变量的名称或我的函数参数的名称进行任何前置/后置修复。

也就是说,我最终做了这样的事情:

template<typename T> struct Foo
{
  explicit Foo(T x) : x(x) // This [i.e., x(x)] seems to be doing the "Right Thing", but is this well defined?
  {/*            ^ 
       No pre-/post- fixing.
   */
  }

  T x; // No pre-/post- fixing.
};

重申一下:我要问的是这是否是定义明确的行为。不是我是否应该这样做...

谢谢。

最佳答案

是的,这很好,而且非常标准。

局部变量总是在名称查找中排在第一位,但初始化列表中的 x(...) 显然只能引用成员变量 [编辑:或基类]。

如果你不使用初始化列表,你将不得不写:

explicit Foo(T x)
{
    this->x = x;
}

关于c++ - C++ 中相同的类成员名称和函数参数名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2181742/

相关文章:

c - PIC 将 SFR 地址传递给 C 语言中的函数

javascript - 使用for循环检查多个变量的内容

CodeBlocks 突然停止工作,无法构建新程序

c++ - 将多个文件链接到可执行文件

c++ - protected 部分 : no matching function to call

c++ - 有没有C++轻量级的跨平台文件系统库?

c++ - 为定时样本命名​​循环缓冲区类?

c++ - 更新文件时如何防止结构成员值被覆盖 C++

c# - Image.FromFile 为无效图像格式抛出 OutOfMemoryException 是否有原因?

angular - 为什么 Angular 2 将模块命名为 NgModule 而不仅仅是 Module