forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   C++ (http://forum.boolean.name/forumdisplay.php?f=22)
-   -   Область видимости (http://forum.boolean.name/showthread.php?t=15756)

impersonalis 02.11.2011 22:52

Область видимости
 
Подскажите: только в К::Б такой финт можно сделать?
Код:

int x;
void MyF(){
    x+=10;
}

int main(){
    int x=2;
    MyF();
    cout<<x<<endl;//х=2
    getch();
        return 0;
}

Только не надо про extern. Приведён конкретный (чисто синтетический) пример.

SBJoker 02.11.2011 22:55

Ответ: Область видимости
 
демонстрируется сокрытие глобальной переменной посредством локальной?

impersonalis 02.11.2011 22:57

Ответ: Область видимости
 
именно. Это по стандарту? (я просто предпочитаю не использовать глобальные объекты - обхожусь синглтоном, или придумываю им более адекватные, не коллизиящиеся имена)

SBJoker 02.11.2011 23:00

Ответ: Область видимости
 
Да это по стандарту.

impersonalis 02.11.2011 23:00

Ответ: Область видимости
 
Гуд. Вопрос тогда - как в приведённом примере подучить доступ к глобальному Х после объявления локального.

.Squid 02.11.2011 23:06

Ответ: Область видимости
 
Код:

#include <iostream>
 
int x = -20;
void MyF(){
    x+=10;
}
 
int main(){
    int x = 2;
    MyF();
    std::cout << ::x << std::endl; // х == -10
    return 0;
}


impersonalis 02.11.2011 23:09

Ответ: Область видимости
 
Точно! Совсем забыл про "::"
ps http://lib.ru/CPPHB/cpptut.txt 2.1.1 Область видимости

Цитата:

Если вы обозначаете глобальные переменные или
локальные переменные в большой функции такими именами, как i или x,
то сами напрашиваетесь на неприятности.


Часовой пояс GMT +4, время: 21:20.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot