Будет ли удалено значение startNode после того, как функция вернет указатель?
Переменная startNode
прекратит свое существование после возврата из функции GetStart()
, поэтому в этом смысле, да.
Но , ваш код открывает огромную возможность для неопределенного поведения, возвращая адреса тем вещам, которые исчезнут после возврата GetStart()
.Если вызывающая сторона пытается разыменовать возвращенный node*
, может произойти все что угодно.Кроме того, код не может быть скомпилирован как есть, так как вы не можете неявно привести int*
к node*
.
Однако, если вы возвращаете по значению, то все будет в порядке.:
int Maze::GetStart()
{
int startNode = 1;
return startNode;
// return 1; // Why not do this?
}
int pStart = maze.GetStart(); // Get returned value as int, not pointer to int.