깊은 복사와 얕은 복사
질문:
두 복사 사이의 주요 차이점은 무엇인가요? 전체 복사와 얕은 복사?
답변:
얕은 복사:
예:
<code class="c++">class X { private: int i; int *pi; public: X() : pi(new int) {} X(const X& copy) : i(copy.i), pi(copy.pi) {} };</code>
이 얕은 복사본에서 pi는 원본 객체와 복사된 객체 모두에서 동일한 int 객체를 참조합니다.
전체 복사:
예:
<code class="c++">class X { private: int i; int *pi; public: X() : pi(new int) {} X(const X& copy) : i(copy.i), pi(new int(*copy.pi)) {} };</code>
이 깊은 복사에서 pi는 원본과 동일한 값을 가진 새로운 int 개체를 가리킵니다.
복사 생성자 유형:
기본 복사 생성자는 각 멤버의 복사 생성자의 동작에 따라 다릅니다.
예:
In 다음 예에서 기본 복사 생성자는 구현으로 인해 std::Vector 멤버에 대한 전체 복사본을 생성합니다.
<code class="c++">class Y { private: std::vector<int> v; public: Y() {} Y(const Y& copy) : v(copy.v) {} };</code>
이 경우 std::Vector의 복사 생성자는 해당 멤버의 전체 복사본을 생성합니다. 내용입니다.
위 내용은 전체 복사와 얕은 복사: 언제 내 데이터의 실제 복사본이 필요합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!