возвращение ссылок на локальную переменную [duplicate]

Возможный дубликат:

Возврат адреса локальной или временной переменной

Может ли локальная переменнаяДоступ к памяти за пределами ее области?

Даже зная, что происходит в результате следующих отрывков, было бы полезно понять, как это происходит. Далее следуют четыре вопроса.

Дано:

int& foo()
{
    int i = 1;
    return i;
}

И зная, что в следующем ссылку наместный по имени я разыменовывается в temp, который назначен для intVal иместный я исчезает в концеFoo ()

int  intVal = foo();

Первый вопрос - в дальнейшем правая часть выражения такая же, как и выше, так что это тот случай, когда компилятор видит левую часть и, основываясь на контексте, знает, не отменять ли ссылку на возвращенную ссылку, а вместо этого создать новую ссылку инициализируется с ним?

Второй вопрос - и это одно делаетместный я держаться, пока intRef находится в области видимости?

int& intRef = foo();

Третий вопрос - нижеIntPtr получает адресместный я, Итак, использует ли компилятор контекст присваивания и решает не отменять ссылку, чтобы получить значение до получения адреса ссылки (вместо того, чтобы сказать, что берет адрес temp, содержащий значение, на которое ссылаются)?

Четвертый вопрос - аместный я пока держисьIntPtr находится в сфере?

int* intPtr = &foo();   

Ответы на вопрос(2)

Ваш ответ на вопрос