'함수'에 해당되는 글 1건

  1. 2007.09.02 friend 함수
Study - Programming/C/C++2007. 9. 2. 23:16

#include <iostream>
using namespace std;
class Example
{
public:
       Example()
       {
                x = 3;
       }
       friend void Show(Example &ex);
private:
       int x;
                  
};

void Show(Example &e)
{
     cout << "x is : " << e.x << endl;
}

int main(void)
{
    Example ex;
   
    Show(ex);

    return 0;
   
}
 
  우선 Show라는 함수의 정의 부분을 보자. 일반 멤버 함수의 정의와는 달리 Example라는 클래스에 있음에도 Example :: 이런 식으로 스코프(Scope)를 해 주지 않았다. 그럼 위로 올라가 Example클래스의 Show함수의 선언을 보자. 특이한 키워드가 붙어 있을 것이다. friend 이 키워들를 붙이면 Show라는 함수는 이 클래스의 멤버 함수가 아니게 된다. 굳이 구분하자면 전역 함수쯤 될 것이다.
 main함수 안에서 Show의 사용을 보자. ex.Show()가 아닌 그냥 Show()로 불러 들였다. 그리고 인자를 보면 ex라는 객체를 레퍼런스로 넣었다. 외부 함수라는 것이다. 그런데 실행을 해 보면 신기하게 ex라는 객체에 private로 선언되어 있는 멤버 변수 x의 값을 불러 온것을 알 수 있다. 즉 friend 함수는 예외적으로 클래스 내부의 멤버에 접근 할 수 있게 해 주는 역할을 한다.

Posted by 머리