C++ friend;
쥬디시어스
#include iostream
using namespace std;
class Point;
class PointOP{private:int opcnt;
public:PointOP() : opcnt(0) {}
Point PointAdd(const Point&, const Point&); Point PointSub(const Point&, const Point&); 앞의 키워드 Point가 있는이유
~PointOP(){coutOperation times: opcntendl;}};
class Point{private:int x;int y;
public:Point(const int &xpos, const int &ypos) : x(xpos), y(ypos) {} friend Point PointOP::PointAdd(const Point&, const Point&); 앞에 Point가 붙는 이유도 모르겠는데, friend가 붙으니 이 3가지 함수가 더 혼란스럽네요.. 설명좀 부탁드립니다.friend Point PointOP::PointSub(const Point&, const Point&);friend void ShowPointPos(const Point&);};
Point PointOP::PointAdd(const Point& pnt1, const Point& pnt2) 마찬가지로 Point가 붙는이유{opcnt++;return Point(pnt1.x+pnt2.x, pnt1.y+pnt2.y); 반황형이 클래스의 이름이라 return Point인줄 알았는데 괄호 안에 또 반환하는게 있네요.. 무얼 의미하는거죠? 저렇게 반환해서 호출한 부분에서 저 값을 받을 수 있었는지에 대해도 궁금합니다.}
Point PointOP::PointSub(const Point& pnt1, const Point& pnt2){opcnt++;return Point(pnt1.x-pnt2.x, pnt1.y-pnt2.y);}
int main(void){Point pos1(1, 2);Point pos2(2, 4);PointOP op;
ShowPointPos(op.PointAdd(pos1, pos2));ShowPointPos(op.PointSub(pos2, pos1));
return 0;}
void ShowPointPos(const Point& pos){coutx: pos.x,;couty: pos.yendl;}
-
해샘찬
제가 실수한게있는데요
/P ointOP클래스에 있는 함수를 Point함수가 사용 할수있게하는겁니다.
여기보면 Point함수가 사용할수잇게하는겁니다라고 써있는데
함수가아니라 클래스에요ㄷ