아제나 님이 쓰신 글 :
: 전자는 Str을 새로 생성해서 그 안에 데이터를 넣는 것이구요.
: 후자는 Str의 원래 있는 주소만 가져오는거죠.
:
: 후자가 속도는 눈꼽만큼 빠를 수 있겠으나...
: 함수 내부에서 Str을 변경하면 인자로 썼던 값 자체가 변하기 때문에
: 그다지 좋은 코딩이라고 할 수 없는거 같습니다.
:
:
AnsiString data = "ABCDEF";
:
: Print(data);
:
: ShowMessage(data); // 결과 CHANGE
:
: ...
:
: void TForm1::Print(AnsiString& Str)
: {
: Str = "CHANGE";
: }
:
:
: 게다가 AnsiString은 내부적으로 레퍼런스 카운트를 제공하기 때문에
: 새로 생성한다고 해서 메모리 낭비가 심하거나 하지 않습니다.
:
: 좋은 코딩이라고 함은 개발 과정에 모호함을 없애야 하는데,
: (그래야 논리 버그가 줄기 때문이예요)
: 때문에 표준 라이브러리 같은 곳에서는 const를 많이 쓰는거죠.
: 내부에서 변화는 없다라는 것을 명확히 하기 위함입니다.
:
:
: 갑자기궁금 님이 쓰신 글 :
: : 다음과 같은 함수를 만들때,
: : void TForm1::Print(AnsiString Str)
: : {
: : Memo1->Lines->Add(Str);
: : }
: : 와
: : void TForm1::Print(AnsiString& Str)
: : {
: : Memo1->Lines->Add(Str);
: : }
: : 가 다른점은 복사연산자를 쓴건데요...
: :
: : 보통 후자쪽을 많이 쓰는거 같은데 특별한 이유가 있나요?
: : 전자와 같이 썼을때 문제 발생 소지가 있는건지...궁금합니다...
답변 감사합니다....이제야 이해가 되었네요...ㅎㅎ