깊은복사 얕은복사

BS_Lee·2024년 5월 6일
0

C++

목록 보기
11/15

깊은 복사

  • 복사된 두 객체는 완전히 독립적인 메모리를 차지
  • 데이터 자체를 통째로 복사
  • value type의 객체들은 깊은 복사를 하게됨.
#include <iostream>

int main(void) {
	
	// 깊은 복사 수행
	int a = 10;
	
	int *b = new int(a);
	
	// 값 변경 후 확인
	a = 13;
	
	std::cout << *b << std::endl; // 10
	std::cout << a << std::endl;  // 13
	
	// 주소 값 확인
	std::cout << b << std::endl; // 0x55b426bd7eb0
	std::cout << &a << std::endl; // 0x7ffff6181bec
	
	return 0;
}

얕은 복사

  • 메모리에 새로 생성이 되지 않음.
  • 값을 복사하는 것이 아닌, 주소값을 복사
#include <iostream>

int main(void) {
	
	// 얕은 복사 수행
	int a = 10;
	
	// a와 같은 주소값을 가리키고 있겠다는 뜻임.
	int& b = a;
	
	// 값 변경 후 확인
	a = 13;
	
	std::cout << b << std::endl; // 13
	std::cout << a << std::endl; // 13
	
	// 주소 값 확인
	std::cout << &b << std::endl; // 0x7ffd845f68cc
	std::cout << &a << std::endl; // 0x7ffd845f68cc
	
	return 0;
}
profile
설명이 가능할 때까지 공부하기.

0개의 댓글