제가 신규 회원이라 댓글을 못 쓰기에 이렇게라도 답변 드립니다.
C++에서 대입 연산자를 오버라이딩하지 않아도 기본 동작이 수행됩니다. 이 기본 동작은 C의 구조체에서 적용되는 놈이랑 같은 겁니다.
즉, 모든 멤버 변수 (구조체라면 모든 필드) 를 복사해 오는 겁니다.
많은 경우 이것만으로도 충분합니다. 하지만 조심해야 할 때도 있습니다.
멤버 변수로 포인터가 있다고 생각해 봅시다. 이 경우에 기본 대입 동작은 포인터 값을 그대로 복사해 오는 것입니다. 그런데 만일 그 포인터가 가리키는 내용이 동적 할당으로 만들어진 것이라면 문제가 될 수 있습니다. 왜냐하면 나중에 할당을 해제할 때 이쪽 클래스랑 저쪽 클래스에서 중복으로 해제가 될 것이기 때문입니다. 이런 경우에는 필히 대입 연산자를 오버라이딩해 줘야겠죠.