Он должен быть вопрос, который уже был задан, но я не могу найти ответ в любом месте ...доступность новой переменной (объем «нового»)
Моя проблема проста: я читаю что, когда переменная создается с использованием ключевого слова new
, ее область действия не ограничена окружающим {..}
. Так почему же этот код не компилируется?
{
std::string * s = new std::string("foo");
}
std::cout << "print : " << (*s) << std::endl;
Визуальная Sudio говорит мне: «идентификатор„s“не определен» Таким образом, сфера по-прежнему ограничен с ключевым словом «новый»?
'new' не имеет ничего общего с областью действия переменной.Он выделяет память в кучу, вот и все. –
thx все для точности. Поэтому, если я перефразирую свой вопрос: есть ли способ получить доступ к переменной вне ее диапазона декларации? – Arcyno
@Arcyno: Это совсем другой вопрос. Вы можете получить доступ к любому объекту в течение его жизни, по имени, если это переменная в области видимости или через ссылку или указатель. –