안녕하세요. Deep Copy 부분관련해서 질문 사항이 있습니다.
안녕하세요. 해당 두코드의 차이에 대해서 여쭙고 싶어
CMystring 클래스에는 operator 함수를 구현하지 않은 상황에서 아래 두 코드의 실행 결과가 달라 질문드립니다.
1번 코드
CMystring String3 = String2;2번 코드
CMystring String3;
String3 = String2;
1번 코드에서는 복사가 호출되어 String3에 새로운 메모리가 할당이되고.
2번 코드에서는 단순 대입, 즉 shallow copy 가 일어나는 것을 확인하여 String2와 같은 메모리를 참조하는 것을 확인했습니다.
두코드의 동작 방식을 확인하여 둘의 차이를 간접적으로 확인했으나 정확한 이유를 알고싶어 이렇게 질문게시판에 글을 남깁니다.
답변 3
1
1번은 복사 생성이고 2번은 단순 대입입니다. C++에서 인스턴스 선언 및 정의 문법은 = 기호를 이용하는 것이 아니라 괄호를 이용해 초깃값을 기술하는 것이 원칙입니다. C언어와의 호환을 위해 = 기호를 사용한 초기화가 함께 사용되는 것입니다. 이와 관련한 내용이 이미 강의에 포함되어 있습니다.
[인스턴스 선언 및 정의]
관련 내용을 다시 참고하실 것을 권합니다. 참고하시기 바랍니다. 😄
0
안녕하세요, 인프런 AI 인턴입니다.
심재성님의 질문에 대한 답변을 찾을 수 있는 유사한 내용의 질문이 있습니다. 복사 생성자와 대입 연산자의 차이에 대한 설명과 C++에서의 Deep Copy와 Shallow Copy의 개념에 대해 설명해주고 있으니 참고하시면 좋을 것 같습니다.
아래 링크를 확인해보세요.
- 질문 제목: 배열과 벡터에 대해 질문드립니다
- 답변 내용: 배열은 RW가 가능한 데이터 영역 메모리(보통 스택이나 힙)를 관리하는 방법인 유도형(자료형)입니다. C++의 vector<>는 STL이 제공하는 형식으로, 배열처럼 보이지만 내부는 연결 리스트가 될 수도 있고, 배열이 되기도 합니다. 복사 생성자와 대입 연산자의 차이에 대한 설명도 포함되어 있습니다.
인터페이스 상속과 추상 자료형 2:00 질문
0
50
1
13분 42초의 예제
0
52
2
네임스페이스 스코프 내에서 정의된 변수, 함수들이 위치하는 곳 질문
0
47
1
소멸자 가상함수 질문
0
55
2
이동생성자의 매개변수로 넘어가는 임시객체의 값 유지 관련하여 질문이 있습니다.
0
63
2
임시 객체 복사 생성자 질문드립니다
0
66
2
변수 바인딩에 대한 의문점
0
113
1
C++ 파일 구조 질문
0
128
1
빈 포인터에 멤버함수 호출
0
104
1
파생클래스에서 virtual함수를 선언에 대한 질문입니다.
0
116
2
순수 가상 클래스 선언과 일반 인트 변수의 선언과 다른가요?
0
137
2
안녕하세요. 이동의미론에 대해 제가 잘 이해했는지 궁금합니다.
0
132
1
인스턴스의 개념에 대해 int a(3), int(5) 예시를 바탕으로한 질문입니다.
0
189
2
식별자 검색 순서 관련 namespace 생략 관련 오류에 관한 질문
0
175
1
마지막 주소록 예제 c 파일 한글 깨짐 현상
0
190
1
nullprt vs null
0
153
2
쓸데없지만 질문드리고싶습니다
0
181
1
복사 생성자 질문 드립니다.
0
221
1
생성자 궁금한거 있습니다
0
218
2
단순대입 오류 발생 이유
0
235
1
네가지 형변환 강의 질문
0
283
1
CMyString Step10 강의 질문
0
174
1
임시 객체와 보이지 않는 복사 생성 강의 질문
0
268
2
섹션8 3번째 강의 (실습 프로젝트 - 문자열 필터개선) 질문
0
219
2





