일반적으로 객체를 그냥 복사할 수 있는 것은 아닙니다.
'=' 연산자는 단순히 객체의 참조만을 복사할 뿐이죠.
델파이에서는 복사를 위해서는 Assign 메소드를 이용합니다. TPersist에 정의되어 있고, 복사할 때는 복사할 객체를 먼저 생성한 후에, 새로 생성한 객체에서 Assign을 호출합니다. 비트맵 이라던지, StringList라던지... TPersist에서 상속받은 대부분의 객체는 이런식으로 똑같은 멤버 값을 갖는 객체로 만들 수 있습니다.
하지만, 사용자가 새로 만든 클래스는 전적으로 사용자가 책임을 져야 합니다. 사용자가 추가한 멤버 변수들에 대해서는 사용자가 따로 Assign 함수를 어버라이드 해서 복사해 주는 코드를 작성해야 합니다.
저도 주로 Assign을 오버라이드하거나, 새로 정의해서 사용을 합니다만, 가끔 자바처럼 내부적으로 Clone라는 메소드를 만들어서 사용하기도 합니다. Clone는 내부에서 자신의 객체를 생성하고, 생성된 객체에 현재 멤버 변수 값들을 복사한 다음에 새로 생성한 객체의 참조를 반환하는 함수죠 ^^;
일반적으로 객체를 그냥 복사할 수 있는 것은 아닙니다.
'=' 연산자는 단순히 객체의 참조만을 복사할 뿐이죠.
델파이에서는 복사를 위해서는 Assign 메소드를 이용합니다. TPersist에 정의되어 있고, 복사할 때는 복사할 객체를 먼저 생성한 후에, 새로 생성한 객체에서 Assign을 호출합니다. 비트맵 이라던지, StringList라던지... TPersist에서 상속받은 대부분의 객체는 이런식으로 똑같은 멤버 값을 갖는 객체로 만들 수 있습니다.
하지만, 사용자가 새로 만든 클래스는 전적으로 사용자가 책임을 져야 합니다. 사용자가 추가한 멤버 변수들에 대해서는 사용자가 따로 Assign 함수를 어버라이드 해서 복사해 주는 코드를 작성해야 합니다.
저도 주로 Assign을 오버라이드하거나, 새로 정의해서 사용을 합니다만, 가끔 자바처럼 내부적으로 Clone라는 메소드를 만들어서 사용하기도 합니다. Clone는 내부에서 자신의 객체를 생성하고, 생성된 객체에 현재 멤버 변수 값들을 복사한 다음에 새로 생성한 객체의 참조를 반환하는 함수죠 ^^;
그럼, 즐푸~