【发布时间】:2020-05-01 22:22:52
【问题描述】:
#include <iostream>
struct A
{
A(int n) { std::cout << n; }
int n{2};
};
int main()
{
A a{1};
}
输出是1 而不是2。
如果参数名称与数据成员的名称相同,C++ 标准是否定义首选参数名称?
【问题讨论】:
-
复制变量名是一个非常糟糕的主意,即使它在语言中技术上是合法的。这会导致混淆您打算使用哪个变量。
-
阅读编译器警告。
-
使用 clang 9.@MichaelChourdakis 默认选项无警告
-
@xmllmx 那么太糟糕了。不惜一切代价避免隐藏现有变量。
-
@xmllmx 启用标志
-Wshadow-all无论如何,这是一个很好的标志。
标签: c++ class namespaces standards datamember