如果参数的名称与数据成员的名称相同呢?

问题描述 投票:0回答:1
#include <iostream>

struct A
{
    A(int n) { std::cout << n; }
    int n{2};
};

int main()
{
    A a{1};
}

输出是1而不是2

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

c++ class namespaces standards datamember
1个回答
2
投票

参数比成员变量在“更紧密”的范围内,因此参数shadows成员变量。

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

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

© www.soinside.com 2019 - 2024. All rights reserved.