W C++, jaka jest rozdzielczość zakresu ("kolejność pierwszeństwa") dla nazw zmiennych shadowed? Nie mogę znaleźć w Internecie zwięzłej odpowiedzi.W C++, jaka jest rozdzielczość zakresu ("kolejność pierwszeństwa") dla shadowowanych nazw zmiennych?
Na przykład:
#include <iostream>
int shadowed = 1;
struct Foo
{
Foo() : shadowed(2) {}
void bar(int shadowed = 3)
{
std::cout << shadowed << std::endl;
// What does this output?
{
int shadowed = 4;
std::cout << shadowed << std::endl;
// What does this output?
}
}
int shadowed;
};
int main()
{
Foo().bar();
}
Nie mogę myśleć o innych zakresach, gdzie zmienna może konflikt. Daj mi znać, jeśli przegapię jedną.
Jaka jest kolejność priorytetów dla wszystkich czterech zmiennych shadow
w funkcji członka?
Możesz mieć blok kodu wewnątrz 'bar()', który również deklaruje 'shadowed'. –
"Rozdzielczość zakresu" –
Dodany przypadek dla bloku kodu wewnątrz 'bar()'. –