C ++에서 복사 생성자를 구현하는 방법?



생성자를 이해하는 것은 많은 사람들에게 수수께끼였습니다. 이 기사는 C ++에서 생성자 복사의 개념을 이해하는 데 도움이 될 것입니다.

이해 생성자 많은 사람들에게 수수께끼였습니다. 이 기사는 C ++에서 생성자 복사의 개념을 이해하는 데 도움이 될 것입니다. 이 기사에서는 다음 사항을 다룰 것입니다.

그럼 시작하겠습니다C ++의 복사 생성자에 대한이 기사와 함께





복사 생성자는 동일한 클래스의 다른 객체를 사용하여 클래스의 객체를 초기화하는 생성자입니다.

통사론:



값을 상수로 만들고 코드 어딘가에서 수정되지 않았는지 확인하기 때문에 const 키워드가 있습니다. 기본 생성자처럼 복사 생성자도 컴파일러에서 제공합니다. 이를 기본 복사 생성자라고합니다. 복사 생성자는 비공개로 만들 수 있습니다. 복사 생성자를 비공개로 만들 때 클래스의 객체를 복사 할 수 없습니다.

다음은 예제 코드입니다. :

#include using namespace std class test {private : int x public : test (int x1) {x = x1} test (const test & t2) {x = t2.x} int getX () {return x}} int main () {test t1 (7) // 여기서 일반 생성자가 호출됩니다. test t2 = t1 // 여기서 복사 생성자가 호출됩니다. cout<< 't1.x = ' << t1.getX() cout << 'nt2.x = ' << t2.getX() return 0 } 

산출:



C ++-Edureka의 출력 복사 생성자

설명

위의 프로그램은 복사 생성자의 기본 데모입니다. x라는 int 유형의 개인 데이터 멤버가있는 클래스 테스트가 있습니다. 그런 다음 변수 x에 7을 할당하는 매개 변수화 된 생성자가 있습니다. t2의 값을 t1의 값으로 인스턴스화하는 복사 생성자가 있습니다. t1의 값을 보유하고 x에 할당 된 t2의 주소가 전송됩니다. x의 값을 반환하는 get 함수가 있습니다.

Java에서 값으로 전달하는 방법

주 함수에는 t1이라는 클래스 테스트의 개체가 있습니다. 이 개체와 관련된 값이 있습니다. 이것은 매개 변수입니다. 주 함수에는 t2라는 클래스 테스트의 또 다른 개체가 있습니다. 이것은 t1 변수를 사용하여 초기화되며 여기에서 복사 생성자가 호출됩니다. 마지막으로, get 함수는 x의 값을 얻기 위해 t1 및 t2에 대해 호출됩니다.

종류

복사 생성자에는 두 가지 유형이 있습니다.
⦁ 얕은 복사 생성자
⦁ 딥 카피 생성자

C ++의 복사 생성자에 대한이 기사로 이동

얕은 복사 생성자 :

얕은 복사본 생성자는 기본 복사본 생성자입니다.

예:

두 사람이 동시에 데이터베이스에 액세스하고 서로 다른 두 시스템에서 값을 변경합니다. 데이터베이스를 변경하면 이러한 변경 사항이 모두 데이터베이스에 표시됩니다. 두 개체는 동일한 메모리 위치를 가리 킵니다. 이것은 Shallow Copy 생성자입니다. 이것은 주로 기본 복사 생성자로 작업 할 때 발생합니다. 다음은 Shallow Copy 생성자에 대한 예제 코드입니다.

#include using namespace std class test {public : int y, z test (int y1, int z1) {y = y1 z = z1}} int main () {test a (7,13) cout<<'the sum is: '<< a.y+a.z return 1 } 

산출:

설명:

위의 코드에서는 컴파일러가 제공하는 기본 복사 생성자를 사용합니다. 따라서 얕은 복사 생성자입니다.

C ++의 복사 생성자에 대한이 기사로 이동

깊은 복사 생성자

Deep Copy Constructor는 사용자 정의 복사 생성자입니다.
예를 들면 :
두 사람이 프레젠테이션을해야하고 둘 다 같은 소스에서 복사하면 복사본이 분리됩니다. 따라서 수정할 때 다른 복사본 만 영향을받지 않습니다. 이것은 Deep Copy 생성자입니다. 두 개체 모두 서로 다른 메모리 위치를 가리키며 한 개체의 변경 사항이 다른 개체에 영향을주지 않습니다. 메모리는 동적으로 할당됩니다.

다음은 전체 복사 생성자에 대한 예제 코드입니다.

#include using namespace std class test {private : int x public : test (int x1) {x = x1} test (const test & t2) {x = t2.x} int getX () {return x}} int main () {test t1 (7) // 여기서 일반 생성자가 호출됩니다. test t2 = t1 // 여기서 복사 생성자가 호출됩니다. cout<< 't1.x = ' << t1.getX() cout << 'nt2.x = ' << t2.getX() return 0 } 

산출:

설명

이것은 위에서 사용한 것과 동일한 코드로 유사한 출력을 제공합니다. 사용자 정의 복사 생성자이므로 전체 복사 생성자입니다.

따라서 우리는 'C ++의 복사 생성자'에 대한이 기사의 끝까지 왔습니다. 자세한 내용은 다음을 확인하십시오. 신뢰할 수있는 온라인 학습 회사 인 Edureka에서 제공합니다. Edureka의 Java J2EE 및 SOA 교육 및 인증 과정은 Hibernate & Spring과 같은 다양한 Java 프레임 워크와 함께 핵심 및 고급 Java 개념 모두에 대해 교육하도록 설계되었습니다.

devops의 요리사는 무엇입니까

질문이 있으십니까? 이 블로그의 댓글 섹션에 언급 해 주시면 가능한 한 빨리 답변을 드리겠습니다.