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