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
[62530] Re:Re:AnsiString을 인자로 쓸때...
갑자기궁금 [] 829 읽음    2010-09-28 13:50
아제나 님이 쓰신 글 :
: 전자는 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을 인자로 쓸때... 갑자기궁금 856 2010/09/28
62528     Re:AnsiString을 인자로 쓸때... 아제나 848 2010/09/28
62530         Re:Re:AnsiString을 인자로 쓸때... 갑자기궁금 829 2010/09/28
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.