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

eci*_*ive 3 c++ naming arguments members

我有一个简单的对象,包含一些[公共]数据.

我想保持我的界面干净,所以我不想预先/后修复任何公共可访问变量的名称,也不希望我的函数参数的名称.

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

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.
};
Run Code Online (Sandbox Code Playgroud)

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

谢谢.

Pet*_*der 7

是的,那很好,完全标准.

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

如果您没有使用初始化列表,则必须编写:

explicit Foo(T x)
{
    this->x = x;
}
Run Code Online (Sandbox Code Playgroud)