C++을 한창 공부하는 중인데요. 동적할당과 참조형에서 궁금한게 있습니다.
글쓴이: khs9461 / 작성시간: 월, 2017/02/27 - 11:47오전
#include<string.h> #include<iostream> using namespace std; typedef struct { int xpos; int ypos; }Point; Point & PntAdder(const Point &p1, const Point &p2)//값을 참조자형으로 받는다. { Point *kuku = new Point; kuku->xpos = p1.xpos + p2.xpos; kuku->ypos = p1.ypos + p2.ypos; return *kuku; //왜 *형으로 반환? } int main() { Point * lulu = new Point; lulu->xpos = 3; lulu->ypos = 5; //포인터형의 스트럭쳐는 . 이 아니라 ->로 값을 줘야함. Point * lala = new Point; lala->xpos = 7; lala->ypos = 19; //포인터형의 스트럭쳐는 . 이 아니라 ->로 값을 줘야함. Point &ref = PntAdder(*lulu,*lala); cout << ref.xpos << endl; cout << ref.ypos << endl; delete lulu; delete lala; delete &ref; return 0; }
여기에서 15번째 줄 쯤에 return *kuku; 이부분에서 왜 *형으로 반환을 해야하는 걸까요? 이해가 잘 되지 않습니다 ㅜㅜ
Forums:
소스를 를 이용해 작성해주세요
소스를
< code> < /code>
를 이용해 작성해주세요
Point & PntAdder(const Point
Point & PntAdder(const Point &p1, const Point &p2)
함수의 리턴형이 참조자이기 때문에 포인터를 넘기는것이 아니라 객체를 넘기게 하기 위해서 *연산자를 사용한것입니다.
즉, return *kuku; 에서 *는 형 변환을 한것이 아니라 kuku 주소의 객체를 가져오기 위하여 *연산자를 사용한것입니다.
감사합니다
이해가 잘되었습니다 ㅠㅠ감사합니다.
댓글 달기