inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문

vetor구현 질문있습니다!

319

111규민

작성한 질문수 4

0

vetor를 구현하는 부분에서 질문 있습니다!*연산을 위해 아래와같이 구현하신걸 보고 이해가되지 않습니다..!

for (auto i = v.begin(); i!=v.end(); ++i) {

cout << *i << "\n";

}

T& operator*() { return *_ptr}

*연산을 통해 데이터를 꺼내오는 것이면 데이터의 복사값을 반환해주는게 아닌 어떻게 T& 주소값을 반환해주는 연산이 허용되는지 해당 문법이 잘 이해가 되지 않습니다..!

c++

답변 2

0

Rookiss

참조값을 반환하는 이유는 그래야 *it = 100; 같은 값으로 수정 또한 가능하기 때문입니다.
참조 문법은 외관상 복사처럼 만들어주지만, 실제 내부 동작은 포인터처럼 주소를 반환하기 때문에
원본 데이터를 건드릴 수 있게 됩니다.

0

인프런 AI 인턴

안녕하세요, 인프런 AI인턴이에요.

vector의 구현에서 연산자*()를 통해 데이터를 가져오는 부분에 대해 궁금하신 것 같아요.

연산자*()는 포인터를 사용하는 것처럼 인스턴스를 가리키는 포인터를 반환하는 것입니다. 반환형이 T&인 이유는 반환값이 해당 인스턴스를 수정할 수 있는 참조로 반환되기 때문입니다.

그리고 반복자를 사용할 때 for문을 통해 주소 값을 차례로 이동하기 때문에 연산자*()를 사용하면 해당 주소값의 인스턴스 값이 반환됩니다.

즉, 연산자*()가 T& 포인터 참조를 반환하는 것은 해당 인스턴스를 바로 참조하여 연산하는 효율성과 수정 가능성을 높이기 위한 설계라고 할 수 있습니다.

이해에 도움이 되었는지요. 추가적인 질문 있으시면 언제든지 댓글로 남겨주세요.

소스코드와 관련하여 질문드립니다

0

70

1

map 컨테이너의 emplace 함수에 대해

0

115

2

시작이 안되네요...!

0

99

2

EAX 명령어 실행 시 RAX의 상위 32비트가 초기화 되는 이유

0

127

1

리틀 엔디안 장점 질문합니다.

0

131

1

메모리 창에 주소를 넣었는데 영어 꺠짐

0

125

1

타입변환#2 build시 knight 인접 stack이 침범당했다는 error가 발생합니다.

0

94

2

map #1 8분 58초 맵은 레드블랙트리로 이루어진 것 같습니다.

1

141

2

hello world 부터 오류 ㅠㅜ

0

190

1

지역변수가 스택? 레지스터

0

132

2

마지막 문제 질문드립니다.

0

165

2

메모리창이 비활성화됩니다.

0

98

1

이중포인터 강좌 부분 질문있습니다.

0

146

1

2를 더하는 이유

0

133

1

메모리 주소 창 엔디안 질문 드립니다. 인프런 봇 답변도 괜찮습니다

1

111

1

해당 코드는 왜 오류가 날까요?

0

156

1

마지막 문제 질문 있습니다.

0

119

1

강의 마지막부분에 질문이 있습니다.

0

192

2

Field초기화

0

141

1

virtual과 override 차이

0

315

2

3:30 참조자 리턴

0

168

1

map 찾기

0

159

1

프로그램 질문드려요

0

261

1

캐스팅 질문

0

139

1