작성
·
266
1
일반 함수에서는 덧셈을 할 때
함수에 인자 2개를 넣고 리턴시키는데
operator+는 const Position& arg로 인자가 하나잖아요
근데 어떻게 2개를 더한값이 리턴이 되나요?
operatro+안에있는 pos랑 main함수안에있는 pos랑 다른거아닌가요?
밖에서는 pos를
pos._x = 0;
pos._y = 0;
으로 초기화시켰는데 operator+안에서만든 임시객체 pos는
뭔값을 가지고있는지 모를거같은데 이 부분이 잘 이해가 안됩니다.
답변 2
0
0
지금은 class Position 안에 operator+가 정의되어 있다는 차이가 있습니다.
즉 일반 함수가 아닌 멤버 함수라는 것이죠.
말씀대로 '일반' 함수라면 덧셈을 할 때 함수에 인자 2개를 넣고 리턴시키지만,
멤버 함수는 그런 개념이 아니라, 첫번째 인자가 '숨겨져' 있고
그 '숨겨진' 인자는 무조건 해당 class로 만든 객체다! ~라고 생각하시면 됩니다.
멤버 함수 내에서는 멤버 변수에 자유롭게 접근할 수 있기에 (정확히 말하면 this 포인터로..)
pos._x나 pos._y에 접근할 수 있는 것입니다.