Coding/VB C C++

[C&C++] friend

smores 2007. 12. 17. 10:03
friend로 선언된 함수 또는 클래스는 이들을 정의해 준 class의 내부 변수를 볼 수 있지만, 그 역은 성립하지 않음.

friend function의 예제
// friend functions
#include <iostream>
using namespace std;

class CRectangle {
    int width, height;
  public:
    void set_values (int, int);
    int area () {return (width * height);}
    friend CRectangle duplicate (CRectangle);
};

void CRectangle::set_values (int a, int b) {
  width = a;
  height = b;
}

CRectangle duplicate (CRectangle rectparam)
{
  CRectangle rectres;
  rectres.width = rectparam.width*2;
  rectres.height = rectparam.height*2;
  return (rectres);
}

int main () {
  CRectangle rect, rectb;
  rect.set_values (2,3);
  rectb = duplicate (rect);
  cout << rectb.area();
  return 0;
}



friend class의 예제

// friend class
#include <iostream>
using namespace std;

class CSquare;

class CRectangle {
    int width, height;
  public:
    int area ()
      {return (width * height);}
    void convert (CSquare a);
};

class CSquare {
  private:
    int side;
  public:
    void set_side (int a)
      {side=a;}
    friend class CRectangle;
};

void CRectangle::convert (CSquare a) {
  width = a.side;
  height = a.side;
}
  
int main () {
  CSquare sqr;
  CRectangle rect;
  sqr.set_side(4);
  rect.convert(sqr);
  cout << rect.area();
  return 0;
}

'Coding > VB C C++' 카테고리의 다른 글

Global conditional define (#const) statements in vb.net  (0) 2016.02.03
예술적인 C 코드  (0) 2008.02.19
[C&C++] Inheritance between classes  (0) 2007.12.18
[C&C++] static member  (0) 2007.12.17
[C&C++] constructor, destructor  (0) 2007.12.17