inflearn logo
강의

Course

Instructor

[MMORPG Game Development with C++ and Unreal Engine Series] Part 3: Data Structures and Algorithms

Stack

Pop()함수에서 레퍼런스를 반환하지 않는 이유가 궁금합니다

386

JM

14 asked

0

T& Pop()

{

T ret = data[Size - 1]; // _data가 동적배열

_Size--; // 크기 1 줄여서

return ret; // 반환한다

}

 

에서 T ret = data[Size - 1]; 에서

더 이상 유효하지 않은 데이터라

Pop()함수의 반환형을 T&같이 주소로는 반환할 수 없고

T처럼 복사를 하는 방식으로 반환한다고 하셨는데

 

T ret = data[Size - 1]; 에서 data가 더이상 유효하지 않은 데이터가 되는 이유가 궁금합니다

 

 

 

기술면접

Answer 3

1

Rookiss

아 질문 의도를 살짝 착각했네요.

T ret = data[Size - 1];

여기서 Size가 유효한 데이터의 범위 (즉 개수)를 판별하고 있으니
그것을 넘어난 인덱스의 데이터는 유효하지 않다 간주하는 것이죠 (메모리상으로 존재하는 것과 별개로)

1

Rookiss

ret 이 변수는 지역 변수이기 때문에 날라가기 때문입니다.
data가 문제가 아니라 ret라는 변수가 문제입니다.

0

JM

선생님께서 답변해주시기 전에

chatGPT에 물어봤는데

 

chatGPT

Pop() 함수에서 반환형을 T& 로 지정하려는 것은

해당 함수가 호출된 후에도 stack에서의 해당 요소를 계속적으로 참조할 수 있도록 하려는 의도입니다.

그러나 C#에서는 이를 지원하지 않습니다.

T ret = data[Size - 1]; 에서 ret은 실제로는 data 배열에서 마지막 요소를 복사합니다.

이렇게 복사된 값은 ret 변수에 저장되고, 이후에 Size를 감소시키는 것으로 해당 요소가 stack에서 제거되는 과정을 나타냅니다.

즉, data[Size - 1]은 stack에서 제거된 요소가 아니라 마지막 요소를 나타내는 것이며,

이것을 복사하여 반환하는 것입니다.따라서 반환 형식을 T& 로 설정하는 것은 불가능합니다.

대신에 T로 복사된 값을 반환합니다.

 

라고 하던데, 이 부분도 맞는 설명일까요??

네트워크 전체 흐름 복습 질문

0

10

1

프로필 사진 세팅과 관련하여 질문 드립니다

1

22

2

시스템 엔지니어 관련 질문입니다.

0

36

2

구글 폼 작성 완료!

1

29

1

개발과 연관없는 경력 기입 여부

1

83

2

이직 준비 방향에 대한 조언을 구하고 싶습니다.

1

72

2

이력서 구성에 대한 질문드립니다.

1

77

2

Replace함수 질문

0

82

2

A*, 다익스트라, Bfs차이 질문

0

171

2

closed list를 비교하는 부분이 궁금합니다.

0

118

1

부모가 2개 이상일경우 질문

0

172

2

sort함수 쓰려면 알고르즘헤더를 추가해야하는거 아닌가요?

0

187

2

빅오 표기법 2단계

0

328

1

list의 insert, erase에서 매개변수는 왜 iterator를 복사형으로 받나요?

0

290

1

iterator의 begin, end, insert, erase함수에서 iterator를 반환할 때 일어나는 현상이 궁금합니다

0

227

1

언리얼 part.4 는 안나오나요?

0

448

1

재귀함수 질문

0

464

1

클레스 템플릿 헤더파일 분리시 주의 사항이 있나요?

0

563

3

Pos operator< 어디서 사용하나요?

0

518

2

Disjoint Set 클래스 수정해도 괜찮나요?

0

468

1

A*알고리즘 작성과정에서 블록 안에서 초기화를 한 이유가 궁금합니다.

0

592

1

1강에서의 List와 자료구조편에서의 List의 차이가 뭘까요?

0

597

1

이진 탐색 트리 삭제 질문

0

700

1

해당 문제 유형을 수학적으로 표현 가능할까요?

0

505

1