C++ 복사생성자..
글쓴이: 익명 사용자 / 작성시간: 화, 2022/06/28 - 3:45오후
안녕하세요. C++ 공부중인데... deep copy 관련해서 하기 코드에 세그먼트 오류가 납니다.
class Pair { public: int *pa,*pb; Pair(int, int); Pair(const Pair &); ~Pair(); }; Pair :: Pair(int a, int b) { pa = new int(); pb = new int(); *pa = a; *pb = b; } Pair :: Pair(const Pair & obj) { Pair(*obj.pa, *obj.pb); } int main() { Pair p(15,16); Pair q(p); Pair *hp = new Pair(23,42); delete hp; return 0; }
Pair q(p)를 실행하면 Pair(const Pair & obj)가 불리고,
obj의 pa, pb를 가지고 Pair(int a, int b)로 넘어가게 했는데..
q의 값이 제대로 할당이 안되는거 같아요..
Pair(const Pair & obj)에서 불린 Pair(int a, int b) 값이 제대로 안넘어가나요?
Pair :: Pair(const Pair & obj) { pa = new int(); pb = new int(); *pa = *obj.pa; *pb = *obj.pb; }
이렇게 하면 값은 잘 넘어가는데.. new int()가 중복이라
Pair(int a, int b)를 그대로 사용하고 싶어요.
불가능한가요..?
Forums:
생성자에서 다른 생성자에 위임할 때는 이렇게 하는
생성자에서 다른 생성자에 위임할 때는 이렇게 하는 겁니다.
겸사겸사 다른 곳도 좀 고치고 테스트를 위한 코드도 추가했어요.
댓글 달기