ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • friend 키워드 사용
    Coding/Tip !! 2018. 9. 19. 01:32

    friend 

    지정되어있는 해당 함수 또는 클라스에 대해 

    자신의 private이나 protected 멤버를 public 권한으로 

    접근하게 해주는 기능을 하는 키워드이다.




    사용법

    friend class 클래스이름;


    friend 함수이름;


    friend 클래스이름::함수이름;


    -> 이를 사용하면 객체 사용이 편리해지나 캡슐화를 망가뜨리게되는 단점이 있다.

    -> 그렇기 때문에 너무 많이 사용하는 것은 권장하지 않는다.



    아래와 같은 코드를 예시로 들겠다.


    main.cpp

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #include <iostream>
    #include "test.h"
     
    using namespace std;
     
     
    int main()
    {
        testa a;
        testb b;
        b.func(a);
     
        return 0;
    }




    test.h

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    #ifndef TEST_H
    #define TEST_H
    #include <iostream>
     
    using namespace std;
    class testb;
     
    class testa{
        friend class testb;
    private:
            int a = 7;
    public:
    };
     
    class testb{
     
    private:
            int b = 8;
    public:
            testb();
            void func(testa &aa);
    };
     
    testb::testb(){
     
    }
    void testb::func(testa &aa){
        cout << aa.a << endl;
    }
    #endif // TEST_H
     



    현재 class testa에서 class testb를 알지 못하기 때문에 

    5번라인에서 foward declaration을 해주었다.


    friend class 선언 위치는 해당 class내부에 아무대나 선언해도 상관이 없다.

    friend class로 testb를 해주었기 때문에 testa의 private 변수에도 접근이 가능하게 된다.

    그러므로 7이 출력되게 된다.


    이러한 friend 키워드는 class 뿐아니라 함수에서도 적용이 가능하다.



    반응형

    'Coding > Tip !!' 카테고리의 다른 글

    Null Pointer Dereference (널 포인터 역참조) 수정중  (0) 2018.09.19
    포인터와 역참조  (0) 2018.09.19
    ::연산자와 . 연산자  (0) 2018.09.19
    static 변수  (0) 2018.09.18
    const 참조자  (0) 2018.09.17

    댓글

Designed by Tistory.