• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    해결됨

안녕하세요. Deep Copy 부분관련해서 질문 사항이 있습니다.

24.01.04 00:36 작성 조회수 185

0

안녕하세요. 해당 두코드의 차이에 대해서 여쭙고 싶어

CMystring 클래스에는 operator 함수를 구현하지 않은 상황에서 아래 두 코드의 실행 결과가 달라 질문드립니다.

 

1번 코드

CMystring String3 = String2;

2번 코드

CMystring String3;
String3 = String2;

 

1번 코드에서는 복사가 호출되어 String3에 새로운 메모리가 할당이되고.

2번 코드에서는 단순 대입, 즉 shallow copy 가 일어나는 것을 확인하여 String2와 같은 메모리를 참조하는 것을 확인했습니다.

 

두코드의 동작 방식을 확인하여 둘의 차이를 간접적으로 확인했으나 정확한 이유를 알고싶어 이렇게 질문게시판에 글을 남깁니다.

답변 3

·

답변을 작성해보세요.

1

1번은 복사 생성이고 2번은 단순 대입입니다. C++에서 인스턴스 선언 및 정의 문법은 = 기호를 이용하는 것이 아니라 괄호를 이용해 초깃값을 기술하는 것이 원칙입니다. C언어와의 호환을 위해 = 기호를 사용한 초기화가 함께 사용되는 것입니다. 이와 관련한 내용이 이미 강의에 포함되어 있습니다.

[인스턴스 선언 및 정의]

https://www.inflearn.com/course/lecture?courseSlug=c%EA%B0%9C%EB%B0%9C%EC%9E%90%EB%A5%BC-%EC%9C%84%ED%95%9C-%EC%B5%9C%EC%86%8C%ED%95%9C%EC%9D%98-cpp&unitId=191850

관련 내용을 다시 참고하실 것을 권합니다. 참고하시기 바랍니다. 😄

0

심재성님의 프로필

심재성

질문자

2024.01.04

답변 감사합니다 !! ㅎㅎ 좋은 하루 보내세요 !!

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2024.01.04

안녕하세요, 인프런 AI 인턴입니다.

심재성님의 질문에 대한 답변을 찾을 수 있는 유사한 내용의 질문이 있습니다. 복사 생성자와 대입 연산자의 차이에 대한 설명과 C++에서의 Deep Copy와 Shallow Copy의 개념에 대해 설명해주고 있으니 참고하시면 좋을 것 같습니다.

아래 링크를 확인해보세요.

  • 질문 제목: 배열과 벡터에 대해 질문드립니다
  • 답변 내용: 배열은 RW가 가능한 데이터 영역 메모리(보통 스택이나 힙)를 관리하는 방법인 유도형(자료형)입니다. C++의 vector<>는 STL이 제공하는 형식으로, 배열처럼 보이지만 내부는 연결 리스트가 될 수도 있고, 배열이 되기도 합니다. 복사 생성자와 대입 연산자의 차이에 대한 설명도 포함되어 있습니다.