возвращение ссылок на локальную переменную [duplicate]
Возможный дубликат:
Возврат адреса локальной или временной переменной
Может ли локальная переменнаяДоступ к памяти за пределами ее области?
Даже зная, что происходит в результате следующих отрывков, было бы полезно понять, как это происходит. Далее следуют четыре вопроса.
Дано:
int& foo()
{
int i = 1;
return i;
}
И зная, что в следующем ссылку наместный по имени я разыменовывается в temp, который назначен для intVal иместный я исчезает в концеFoo ()
int intVal = foo();
Первый вопрос - в дальнейшем правая часть выражения такая же, как и выше, так что это тот случай, когда компилятор видит левую часть и, основываясь на контексте, знает, не отменять ли ссылку на возвращенную ссылку, а вместо этого создать новую ссылку инициализируется с ним?
Второй вопрос - и это одно делаетместный я держаться, пока intRef находится в области видимости?
int& intRef = foo();
Третий вопрос - нижеIntPtr получает адресместный я, Итак, использует ли компилятор контекст присваивания и решает не отменять ссылку, чтобы получить значение до получения адреса ссылки (вместо того, чтобы сказать, что берет адрес temp, содержащий значение, на которое ссылаются)?
Четвертый вопрос - аместный я пока держисьIntPtr находится в сфере?
int* intPtr = &foo();