|
김경래 님이 쓰신 글 :
: 안녕하세요 이해가 잘안가서 질문을하게되었습니다.
: 클래스에 있는 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 ();
: }
:
안녕하세요 스페로 입니다.
C++에서 참조(reference)라고 하는 포인터와 관련된 특서을 갖고 잇는 넘이 있습니다.
함수에 매개 변수에 &을 쓰면 참조 매개 변수가 됩니다.
void swap (Company &x)
선언은 위와 같이 하고요 전달할때는 &을쓸필요가 없습니다. 포인터로 프로그래밍 할실때와
차이가 잇지요
이렇게 하면 컴파일러는 자동으로 인수로 사용된 변수의 주소를 전달합니다.
그래서 스왑 함수가 올바르게 교환이 이루어집니다.
포인터 로선언하고 swap()함수를 하는 C언어 예제가 많을겁니다.
call by reference를 C언어에서 구현하려면 이렇게 했지요
C++에서는 이제 더이상 위험한 포인터를 매개변수로 하지 않고 이렇게 참조를 이용하면
많은점에서 유리 하답니다.
C++기초 책에 참조 매개변수 편을 잘 독파 하세요
|