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

C/C++ Q/A
[2916] Re:연산자 중복 관련 질문
clay [bizncs] 1051 읽음    2003-08-16 05:27
우주와 인간 님이 쓰신 글 :
: 아래 소스에서
: void get_xy(int &i,int &j){i=x,j=y;}
: 이 멤버 함수는 특정한 값을 리턴시키지도 않는데 어떻게
: o3.get_xy(x,y);
:     cout<<"(o1*o2)X:"<<x<<",Y:"<<y<<"\n";
: 이렇게 쓰일수가 있나요?

=========== pass by reference와 pass by value의 차이죠.===================
소스를 보시면 변수 i와 j가 reference(&)로 넘어왔습니다. (pass by reference)
따라서 i값에 x를, j값에 y를 대입하라는 거죠. 물론 변수 i,j는
클래스 외부, 여기서는 main()에서 생성이 되겠죠.
반대로 passs by value로 넘어온 경우는 리턴타입을 pair<int,int>로 해서
return make_pair(x,y)러 넘기면 될 것 같네요.
===========================================================================
: 그리구
: void get_xy(int &i,int &j){i=x,j=y;}
:
: 여기서 &i,&j를 참조메개변수로 받아서 X,와 Y의 값을 받는이유는모조?
: 그냥 바로 X,Y를 리턴시키면 되지 않나요?
: 예를들면     void get_xy(){return x,y;} 이런식으로.
: 그리고 비공개 멤버로 선언됀 x,y하고 메인에서 정의한 x,y하고는
: 각각 ..각각 틀린 변수인가요
==========================================================================
위에 설명한 pass by value의 경우입니다.
pair<int, int> get_xy()
{
      return make_pair(x,y);   // make_pair는 <utility>라는 헤더가 필요함
} 이렇게 하면 되지 않을까요
그리고 메인의 xy는 클래스내부의 xy와 전혀 별개입니다.
혼란스러우면 다른 변수명을 사용하세요.
==========================================================================

:
:
: #include<iostream.h>
:
: class coord{
:     int x,y;
:
: public:
:     coord(){x=0,y=0;}
:     coord(int i,int j){x=i,y=j;}
:     void get_xy(int &i,int &j){i=x,j=y;}
:     coord operator*(coord ob2);
: };
:
: coord coord::operator*(coord ob2)
: {
:     coord temp;
:     temp.x=x*ob2.x;
:     temp.y=y*ob2.y;
: return temp;
: }
:
: main()
: {
:     coord o1(10,10),o2(5,3),o3;
:     int x,y;
:
:     o3=o1*o2;
:
:     o3.get_xy(x,y);
:     cout<<"(o1*o2)X:"<<x<<",Y:"<<y<<"\n";
:
:     return 0;
: }

+ -

관련 글 리스트
2914 연산자 중복 관련 질문 우주와 인간 1029 2003/08/15
2916     Re:연산자 중복 관련 질문 clay 1051 2003/08/16
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.