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:

생성자에서 다른 생성자에 위임할 때는 이렇게 하는
생성자에서 다른 생성자에 위임할 때는 이렇게 하는 겁니다.
겸사겸사 다른 곳도 좀 고치고 테스트를 위한 코드도 추가했어요.
댓글 달기