0
클래스 1과 클래스 2가 있고 클래스 1에 대한 얕은 복사본 생성자가 필요합니다. Class1에는 Class2 인스턴스를 가리키는 포인터 인 멤버 변수가 있습니다. 또한 Class2 ptr을 가리 키도록 변경할 수 있어야합니다.클래스의 포인터를 전달하십시오.
class Class1
{
Class2* ptr;
...
}
소스 파일 : 헤더 파일
때 이제
Class1::Class1()
{
ptr = new Class2();
}
......
Class2* Class1::Exchange(Class2* newClass2)
{
Class2* temp;
ptr = newClass2;
return temp;
}
......
는, 내가 원하는 지금
Class1 original;
Class1 shallowCopy(original);
Class2* newClass2 = new Class2();
Class2* oldClass2;
oldClass2 = orignal.Exchange(newClass2);
delete oldClass2;
이 shallowCopy.ptr와 연관 original.ptr라고 얕은 복사 생성자를 구현하면 어떻게이 두 포인터가 항상 같은 Class2를 가리키는 지 확인할 수 있습니까? 위의 클래스에서 oldClass2가 삭제됨을 의미하므로 shallowCopy의 ptr이 아무 것도 가리키지 않습니다. oldClass2를 삭제하지 않으면 원본 및 shallowCopy의 ptrs가 다른 Class2 인스턴스를 가리키고 있습니다.