복사 생성자 관련 질문드립니다

조회수 87회
class SoSimple{
private:
        int num1; int num2 

..........
    }


SoSimple(SoSimple &copy)  
          :num1(copy.num1) ,   :num2(copy.num2)    {.....}

위에 15,16행은 copy라는 객체로 참조를 받아 맴버 변수 num1과 num2에 접근하고 있습니다.

허나 copy 객체를 통하여 private에 있는 맴버변수 num1과 num2을 외부에서 어떻게 불러올 수 있는지 궁금합니다.

제가 잘못알고 있는 것 같은데 아시는 분 계시면 도움 부탁드립니다!!

1 답변

  • 일반적으로 객체에서 private 멤버 변수는 바로 접근할 수 없습니다.

    그러나 복사 생성자에서는 인수로 넘겨준 객체에서 자신의 private 멤버에 접근 가능합니다.

    복사 생성자라는 것이 새 객체를 만들때 이미 존재하는 객체를 이용해서 새 것을 만드는 것인데, 이때 조건이 반드시 같은 클래스여야 합니다.

    SoSimple(const SoSimple &copy);
    

    질문에는 const가 없었지만 보통은 위와 같이 const를 넣습니다.

    복사 생성자를 이용해서 일반적으로는 동일한 값을 새 객체에 저장합니다만, 값을 변경해서 저장할 수 도 있습니다.

    만약에 이러한 규칙이 없다면 복사 생성자의 인수에서 private 멤버의 값을 알아오기 위해서, 애초에 클래스의 형태를 복사 생성자를 염두하고 만들어야 하는 문제가 있을것 같네요.

답변을 하려면 로그인이 필요합니다.

Hashcode는 개발자들을 위한 무료 QnA 사이트입니다. 계정을 생성하셔야만 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 계정을 생성하셔야만 글을 작성하실 수 있습니다.