我有一个包含一些[公共(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/