U E D R , A S I H C RSS

cpp스터디인데이름을못짓겠어요/7월31일

  • 장우진 학우가 여행에서 돌아와서 앞서 한 내용들의 복습 + 새로운 문법 약간

  • 복사 생성자 : 둘 이상의 포인터 변수가 하나의 메모리 영역을 가리킬 때, 하나의 변수라도 할당 해제가 되면 남은 포인터 변수들은 Null을 가리키게 되는 오류가 발생한다. 이를 방지하기 위해 복사 생성자를 사용한다. 객체가 Parameter로써 넘어갈 때에, 복사 생성자를 통해 자동으로 새로운 객체를 생성한다. 이 때, 이 생성자는 원본 데이터의 정보를 그대로 받아온다. 이 생성자는 parameter로써 그 객체의 참조형을 받는다. 참조형을 parameter로써 받지 않으면 연쇄적으로 복사생성자가 호출되는 무한루프가 발생된다.

    이 생성자는 내부 멤버들을 복사하는 역할을 가지도록 만들면 된다. 이 때, pointer 형을 그냥 받으면 결국 메모리 주소를 공유하게 되므로 이는 주의할 필요가 있다. 이는 일반적인 생성자의 역할로도 사용할 수 있다.


Ex )
    class A{
        int val;
        char * str; 일때,
        A( A& r ) {
        val = r.val; 은 포인터가 아니므로 문제가 없지만,
        str = r.str; 을 하면 문제가 있다. 그러므로 문자열 자체만 복사하도록 하는 함수를 만들어서 사용할 필요가 있다. 
                   메모리 공간 공유를 방지하기 위해.
        }
    }
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:31:38
Processing time 0.0083 sec