#include <iostream>
struct A
{
A(int n) { std::cout << n; }
int n{2};
};
int main()
{
A a{1};
}
输出是1
而不是2
。
C++ 标准是否定义了如果参数名称与数据成员的参数名称相同,则首选参数名称?
参数位于比成员变量"更近"的范围内,因此参数隐藏成员变量。
显而易见的解决方案是重命名参数(或成员变量(,因此它们不再相同。
还可以使用this->n
显式使用成员变量。