Что если аргумент имеет то же имя, что и у члена данных? - PullRequest
0 голосов
/ 15 января 2020
#include <iostream>

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

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

Выходные данные 1, а не 2.

Определяет ли стандарт C ++, что имя аргумента является предпочтительным, если оно совпадает с именем элемента данных?

1 Ответ

3 голосов
/ 15 января 2020

Аргумент находится в «более близкой» области видимости, чем переменная-член, поэтому аргумент shadows переменная-член.

Очевидное решение - переименовать аргумент (или переменную-член ), поэтому они больше не совпадают.

Вы также можете использовать this->n, чтобы явно использовать переменную-член.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...