복사 생성자 관련 질문드립니다
조회수 365회
class SoSimple{
private:
int num1; int num2
..........
}
SoSimple(SoSimple ©)
:num1(copy.num1) , :num2(copy.num2) {.....}
위에 15,16행은 copy라는 객체로 참조를 받아 맴버 변수 num1과 num2에 접근하고 있습니다.
허나 copy 객체를 통하여 private에 있는 맴버변수 num1과 num2을 외부에서 어떻게 불러올 수 있는지 궁금합니다.
제가 잘못알고 있는 것 같은데 아시는 분 계시면 도움 부탁드립니다!!
-
(•́ ✖ •̀)
알 수 없는 사용자 - 〉
1 답변
-
일반적으로 객체에서 private 멤버 변수는 바로 접근할 수 없습니다.
그러나 복사 생성자에서는 인수로 넘겨준 객체에서 자신의 private 멤버에 접근 가능합니다.
복사 생성자라는 것이 새 객체를 만들때 이미 존재하는 객체를 이용해서 새 것을 만드는 것인데, 이때 조건이 반드시 같은 클래스여야 합니다.
SoSimple(const SoSimple ©);
질문에는 const가 없었지만 보통은 위와 같이 const를 넣습니다.
복사 생성자를 이용해서 일반적으로는 동일한 값을 새 객체에 저장합니다만, 값을 변경해서 저장할 수 도 있습니다.
만약에 이러한 규칙이 없다면 복사 생성자의 인수에서 private 멤버의 값을 알아오기 위해서, 애초에 클래스의 형태를 복사 생성자를 염두하고 만들어야 하는 문제가 있을것 같네요.
-
(•́ ✖ •̀)
알 수 없는 사용자
-
댓글 입력