C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[62528] Re:AnsiString을 인자로 쓸때...
아제나 [azena] 848 읽음    2010-09-28 13:32
전자는 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);   
: }
: 가 다른점은 복사연산자를 쓴건데요...
:
: 보통 후자쪽을 많이 쓰는거 같은데 특별한 이유가 있나요?
: 전자와 같이 썼을때 문제 발생 소지가 있는건지...궁금합니다...

+ -

관련 글 리스트
62526 AnsiString을 인자로 쓸때... 갑자기궁금 857 2010/09/28
62528     Re:AnsiString을 인자로 쓸때... 아제나 848 2010/09/28
62530         Re:Re:AnsiString을 인자로 쓸때... 갑자기궁금 830 2010/09/28
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.