해결된 질문
작성
·
285
0
안녕하세요. 해당 두코드의 차이에 대해서 여쭙고 싶어
CMystring 클래스에는 operator 함수를 구현하지 않은 상황에서 아래 두 코드의 실행 결과가 달라 질문드립니다.
1번 코드
CMystring String3 = String2;
2번 코드
CMystring String3;
String3 = String2;
1번 코드에서는 복사가 호출되어 String3에 새로운 메모리가 할당이되고.
2번 코드에서는 단순 대입, 즉 shallow copy 가 일어나는 것을 확인하여 String2와 같은 메모리를 참조하는 것을 확인했습니다.
두코드의 동작 방식을 확인하여 둘의 차이를 간접적으로 확인했으나 정확한 이유를 알고싶어 이렇게 질문게시판에 글을 남깁니다.
답변 3
1
1번은 복사 생성이고 2번은 단순 대입입니다. C++에서 인스턴스 선언 및 정의 문법은 = 기호를 이용하는 것이 아니라 괄호를 이용해 초깃값을 기술하는 것이 원칙입니다. C언어와의 호환을 위해 = 기호를 사용한 초기화가 함께 사용되는 것입니다. 이와 관련한 내용이 이미 강의에 포함되어 있습니다.
[인스턴스 선언 및 정의]
관련 내용을 다시 참고하실 것을 권합니다. 참고하시기 바랍니다. 😄
0
0
안녕하세요, 인프런 AI 인턴입니다.
심재성님의 질문에 대한 답변을 찾을 수 있는 유사한 내용의 질문이 있습니다. 복사 생성자와 대입 연산자의 차이에 대한 설명과 C++에서의 Deep Copy와 Shallow Copy의 개념에 대해 설명해주고 있으니 참고하시면 좋을 것 같습니다.
아래 링크를 확인해보세요.