如果参数与数据成员的参数同名,该怎么办?


#include <iostream>
struct A
{
A(int n) { std::cout << n; }
int n{2};
};
int main()
{
A a{1};
}

输出是1而不是2

C++ 标准是否定义了如果参数名称与数据成员的参数名称相同,则首选参数名称?

参数位于比成员变量"更近"的范围内,因此参数隐藏成员变量。

显而易见的解决方案是重命名参数(或成员变量(,因此它们不再相同。

还可以使用this->n显式使用成员变量。

相关内容

最新更新