ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [C++] friend
    C++ 2023. 4. 11. 20:58

    내 클래스 멤버는 아니지만

    내 클래스 멤버와 동일한 권한을 가졌다고 인정하는 것

    friend keyword는 함수와 클래스 앞에 붙는다!

     


    [friend 함수]

     

    일단 friend 가 붙으면 해당 클래스꺼는 절대 아님

     

    외부에 선언된 함수인데 (전역함수 or 타 클래스 함수)

    friend 라고 선언된 클래스에서 friend라고 인정한 것임

     

    friend 함수는 선언된 클래스의 모든 멤버에 접근할 수 있는 권한이 부여된다

    즉, private까지 접근할 수 있다

     


    [friend 선언 3종류]

     

    1. 전역함수

    bool equals(Rect r, Rect s) { // code }
    
    class Rect {
    	// code
        
    	friend bool equals(Rect r, Rect s);
    };

     

    전역함수는 소속 클래스가 없으므로 범위지정연산자가 당연히 필요없다

     

    2. 타 클래스의 멤버함수

    class Rect{
    	// code
        
        	friend bool RectManager::equals(Rect r,Rect s);
    }

     

    RectManager라는 타 클래스의 멤버함수 equals 를 Rect 클래스에 friend로 선언한 것

    이때는 타 클래스의 멤버함수이므로 범위지정연산자로 명시해줘야한다

     

    3. 타 클래스 멤버함수 전체 (클래스에 friend 붙이기)

    class Rect {
    	// code
        
    	friend RectManager;
    };

     

    클래스 앞에 friend를 붙이는건

    해당 클래스의 모든 멤버함수를 friend로 인정해준다는 것

     

    이렇게 되면 RectManager에 있는 모든 함수가 Rect 클래스의 모든 멤버에 접근 가능

    'C++' 카테고리의 다른 글

    [C++] const  (1) 2023.04.12
    [C++] 접근지정자 (access modifiers)  (3) 2023.04.11
    [C++] static  (0) 2023.04.06
    [C++] inline function  (0) 2023.04.03
    [C++] 소멸자  (0) 2023.03.25