[c++] 구조체와 클래스의 friend 함수
C++에서, 구조체(struct)와 클래스(class)는 유사하지만 몇 가지 차이가 있습니다. 그 중 하나는 friend 함수에 대한 접근 권한입니다. 이러한 friend 함수는 클래스 또는 구조체의 private 멤버에 접근할 수 있는 특별한 함수입니다.
구조체의 friend 함수
구조체에서 friend 함수를 정의하기 위해서는 다음과 같은 문법을 사용합니다:
struct MyStruct {
private:
int privateMember;
friend void myStructFriendFunction(MyStruct &s);
};
위 예제에서 myStructFriendFunction
함수는 MyStruct
구조체의 private 멤버에 접근할 수 있도록 설정됩니다.
클래스의 friend 함수
클래스의 경우, friend 함수를 정의하는 방법은 다소 다릅니다:
class MyClass {
private:
int privateMember;
friend void myClassFriendFunction(MyClass &c);
};
위 예제에서 myClassFriendFunction
함수 역시 MyClass
클래스의 private 멤버에 접근할 수 있도록 설정됩니다.
구조체 및 클래스의 friend 함수 사용 예
이제 구조체와 클래스의 friend 함수를 사용하는 예제를 살펴보겠습니다:
#include <iostream>
struct MyStruct {
private:
int privateMember;
friend void myStructFriendFunction(MyStruct &s);
};
void myStructFriendFunction(MyStruct &s) {
s.privateMember = 10;
}
int main() {
MyStruct s;
myStructFriendFunction(s);
std::cout << "Private member value: " << s.privateMember << std::endl;
return 0;
}
위의 예제에서 myStructFriendFunction
함수는 MyStruct
구조체의 private 멤버에 접근하여 값을 변경할 수 있습니다.
결론
구조체와 클래스의 friend 함수를 사용하면 private 멤버에 접근할 수 있으므로, 특정 상황에서 유용하게 활용될 수 있습니다.
참고문헌:
- https://www.geeksforgeeks.org/friend-class-function-cpp/
- https://en.cppreference.com/w/cpp/language/friend