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

C/C++ Q/A
[906] Re:교환하는함수가 잘이해가 안가요
남병철.레조 [lezo] 1704 읽음    2002-07-25 19:37

안녕하세요? 레조입니다.

Company의 멤버함수로 swap(Company &x)가 있네요.
이녀석의 역활은 인자로 넘어오는 Company 객체의 데이터와
자신의 데이터를 샥~ 바꾸는 것이네요.

그럼 잠깐 훓어 볼까요?

:     void swap (Company &x)
인수로 Company 객체가 넘어오지만 참조(메모리공유)로 넘어오므로
넘어오는 놈은 새로이 임시 객체가 생성되지않고 넘어오는 그녀석의
메모리를 공유합니다.
(넘어오는 시점에 바깥에서 도는 쓰레드에서 이녀석에 접근하면
데이타가 변하겠죠? 같은 메모리 영역에 다른 이름을 쓰는것 뿐이니..)
어쨋든 현재(swap을 호출한 객체) 객체에서 인자로 넘어온 객체와
데이터를 바꿔치기 하기 시작합니다.


:     {
:         char n[20];
:         int s,p;
요까지는 임시 저장을 위해 생성했겠죠?


:         strcpy(n, x.name);
:         s=x.sales ;
:         p=x.profit ;
임시 저장공간에 인자로 넘어온 객체의 데이타를 백업하네요.


:         strcpy(x.name,name);
:         x.sales =sales;
:         x.profit = profit;
인자로 넘어온 객체에다가 swap을 호출한 객체의 데이타를 채웁니다.


:         strcpy(name,n);
:         sales =s;
:         profit =p;
:     }
인자로 넘어온 객체의 백업데이타를 swap을 호출한 객체의 데이터로
업데이트 시키네요.

데충 이런 흐름으로 swap 함수가 사용되고 있습니다.
주소 연산자 &와 참조 연산자 &는 그 모양이 같지만 용도가 다르니
주의하면서 봐야겠습니다.
(라고 책에서 읽은 기억어.. ^^;)




김경래 님이 쓰신 글 :
: 안녕하세요 이해가 잘안가서 질문을하게되었습니다.
:  클래스에 있는 swap함수에 Company &x가 멀가르키는지를 모르겠습니다.
: 죄송합니다. 설명을 부탁합니다.
: 그럼 즐거운 하루되세요
:
: #include <stdio.h>
: #include <string.h>
:
:
: class Company {
:     char name[20];
:     int sales;
:     int profit;
: public:
:     Company (char *p =" ", int x=0,int y=0)
:     {
:         strcpy (name,p);
:         sales =x;
:         profit =y;
:     }
:
:     void swap (Company &x)
:     {
:         char n[20];
:         int s,p;
:         strcpy(n, x.name);
:         s=x.sales ;
:         p=x.profit ;
:         strcpy(x.name,name);
:         x.sales =sales;
:         x.profit = profit;
:         strcpy(name,n);
:         sales =s;
:         profit =p;
:     }
:
:     void print()
:     {
:         printf("회사명 %s \n", name);
:         printf("매상 %d 억원 \n",sales);
:         printf("이익 %d억원 \n",profit);
:     }
: };
:
: void main()
: {
:     Company a("사이버 (주)", 500,39);
:     Company b("푸른솔 (주)",825,78);
:
:     a.swap (b);
:     a.print ();
:     b.print ();
: }
:

+ -

관련 글 리스트
903 교환하는함수가 잘이해가 안가요 김경래 1675 2002/07/23
915     클래스 설계가 별로 안좋군요. 김백일 1724 2002/07/26
906     Re:교환하는함수가 잘이해가 안가요 남병철.레조 1704 2002/07/25
904     Re:교환하는함수가 잘이해가 안가요 최준호.스페로 1786 2002/07/24
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.