Я недавно видел этот код в cppreference:C++ Уплотненный Scope Доступ
string str="global scope";
void main()
{
string str="main scope";
if (true){
string str="if scope";
cout << str << endl;
}
cout << str << endl;
}
который выводит:
if scope
main scope
Это нормально, я понимаю всю вложенную области видимости вещь, и я знаю, что «str» внутри области if будет уничтожена, когда стек разматывает ее в конце инструкции, поэтому после нее она не будет доступна, поэтому вторая печать берет главную «str» в качестве аргумента.
Однако, я знаю, что главная «str» на самом деле доступна внутри IF или, по крайней мере, это должно быть, но вопрос как я могу получить доступ к главной «str» изнутри оператора IF?
И как я могу получить доступ к глобальной «str» изнутри основного и/или if?
Я знаю, что было бы проще просто использовать разные имена, но этот вопрос не для конкретного практического приложения, а для лучшего понимания областей C++.
cppreference никогда не будет "недействительным главный". Это даже не компилируется. – Cubbi
, который зависит от вашего компилятора – J3STER
, он не будет компилироваться на cppreference.com, который использует gcc и clang. – Cubbi