외부 포인터와 연결된 포인터로 구성된 스택을 사용하는이 코드는 깊거나 얕은 복사본을 만들지는 알 수 없습니다. 미안하지만 충분한 정보가 없다면, 이것이 당신이 말해야 할 것이라고 생각합니다. 고맙습니다!내 코드가 객체의 깊거나 얕은 사본을 생성합니까?
void StackClass::operator =(const StackClass& orig)
{
//stack = nullptr;
node* temp = orig.stack;
if (!orig.IsEmpty())
{
while (temp != NULL)
{
stack = orig.stack; // sets thew new stack equal to the old stack's value
temp = temp->next;
} // end while loop
} // end if
else
{
stack = nullptr; // sets it to an empty list because there's no values
} // end else
}
... 당신이 명시 적으로 새 포인터를위한 메모리를 할당하고 코드가없는 것으로 일어나는 것을로 포인터 전달의 내용을 저장할 포인터를 복사하는 것보다 의미 포인터 만 복사하면 포인터가 복사됩니다. –
@JonathanPotter 포인터 일 뿐이므로 깊은 사본을 만들지는 않습니다. – SiggyxLeGiiT
코드가 완전히 엉망입니다. 시작을 위해서는'orig'에서 어떤 것도 복사하기 전에'* this' 객체의 스택에있는 기존 요소를'삭제 '해야합니다 .... 깊은 복사를하려면'new'를 호출해야합니다 (간접적으로'new's와 같은 다른 함수를 호출하여 간접적으로) - 분명히이 코드는'stack'이 실제로'node *'인 경우에는 그렇게하지 않습니다. –