inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

얕은 복사 vs 깊은 복사 #1

깊은복사 복사생성자호출

해결된 질문

173

DWG담

작성한 질문수 17

0

멤버변수에 포인터변수가있으면, 객체를 복사 생성자든 대입연산자든 복사가 이루어질때 (디폴트 생성자,연산자일때) 똑같은 주소값을 가지고 가르키기에 문제가 발생하고, 깊은 복사 (새로 복사 생성자, 대입연산자를 만들어줌)를 만들어주고, 새로 동적할당시키는건 이해했습니다. 

근데 마지막에 깊은복사 new Pet 동적할당할때 Pet의 복사 생성자를 왜 호출하는지 궁금합니다. 기본생성자를 호출해도 똑같이 동작하는데 의미의 차이일까요? 새로 동적할당하여 새로운 메모리를 할당받고, 원본 knight가 가진 pet의 멤버(만약 pet의 멤버가 존재했다면)의 값은 복사하여 전달한다. 라는 개념으로 보면 되나요?

C++

답변 1

1

Rookiss

새로 동적할당하여 새로운 메모리를 할당받고, 원본 knight가 가진 pet의 멤버(만약 pet의 멤버가 존재했다면)의 값은 복사하여 전달한다. 라는 개념으로 보면 되나요?

-> 맞습니다.
기본 생성자가 '똑같이' 동작할 수도 있겠지만
Pet에도 이런 저런 정보 (위치라거나, 레벨이라거나, HP라거나...)가 있을 수도 있으니
기본 생성자가 아니라 그 상태를 복사하는 복사 생성자를 이용해서 만들어주는 것이죠.

visualstudio에서 파일분할관리실습시 설정 문의를 드립니다.

0

541

1

정렬함수 좀 더 확실하게 이해 할 방법이 있을까요?

0

442

1

strcpy() 구현 관련 질문

0

513

1

빌드(망치)를 누르니 이런 오류가 떴습니다. 어떻게 해야 하나요?

0

453

1

클래스 타입의 포인터 질문합니다

0

546

1

입력값을 enum 값에 넣어주는거 이제 막혔나요?

0

498

1

템플릿 특수화 관련 질문

0

385

1

포인터 관련 질문합니다!

0

265

1

Unable to start assembler. Check your settings.

0

831

2

cpu선택

0

539

1

포인터 질문이 있습니다

0

324

1

20:35 에서 구조체 크기에 대한 질문입니다!

0

585

1

iterator 삭제관련

0

406

1

함수 호출을 디스어셈블러로 분석하다가 궁금점이 생겼습니다!

0

310

1

15 분 45초 대 질문

0

309

0

스택 프레임 질문합니다!

2

306

1

오른값 참조 in 게임

0

384

0

동적할당 질문이 있습니다

0

450

1

안녕하세요 메모리에 대해 질문드립니다.

0

305

1

함수객체 의 매개변수

0

360

1

복사생성자

0

434

1

main이나 endl 부분이 주황색으로 표시된건 어떻게 하나요

0

421

1

포인터 실습 강의를 보고 궁금한게 있습니다.

0

355

1

스택 오버플로우

2

790

1