C++에서 프렌드 메커니즘은 캡슐화를 깨고 함수나 클래스가 다른 클래스의 전용 멤버에 액세스할 수 있도록 허용합니다. friend 키워드를 사용하면 함수를 클래스의 friend로 선언하여 해당 클래스의 비공개 데이터 및 메서드에 액세스할 수 있습니다. 친구 메커니즘은 생성자가 서로 친구가 되고 서로의 전용 멤버 초기화 개체에 액세스할 수 있도록 허용하는 등 클래스 간의 순환 종속성을 해결하는 데 자주 사용됩니다. 프렌드 메커니즘은 캡슐화를 감소시키므로 주의해서 사용해야 하며 실제로 필요한 함수나 클래스만 프렌드로 지정된다는 점에 유의해야 합니다.
C++ 함수 프렌드 메커니즘: 캡슐화를 깨는 강력한 도구
소개
프렌드 메커니즘은 함수나 클래스가 다른 클래스나 Private 멤버에 액세스할 수 있도록 하는 C++의 메커니즘입니다. 기능의. 이는 클래스 간의 순환 종속성을 처리하거나 다른 클래스의 특정 멤버에 액세스해야 하는 경우와 같은 특정 상황에서 유용합니다.
Usage
함수를 클래스의 친구로 선언하려면 friend
키워드를 사용할 수 있습니다. 예:
class MyClass { private: int private_member; public: friend void myFriendFunction(MyClass& obj); }; void myFriendFunction(MyClass& obj) { // 可以访问 MyClass 类的私有成员 private_member std::cout << obj.private_member << std::endl; }
실용적 예: 순환 종속성
두 클래스가 서로 종속되어 있는 다음 예를 고려하십시오.
class A { private: std::vector<B*> b_objects; }; class B { private: A* a_object; };
순환 종속성이 허용되지 않으면 두 클래스 모두 초기화할 수 없습니다. 수업은 서로를 참조합니다. 친구 메커니즘은 클래스 생성자를 상대방의 친구로 만들어서 상대방의 전용 멤버에 대한 액세스를 허용함으로써 이 문제를 해결할 수 있습니다.
class A { private: std::vector<B*> b_objects; friend class B; // 允许 B 类访问 A 的私有成员 }; class B { private: A* a_object; friend class A; // 允许 A 类访问 B 的私有成员 };
참고:
위 내용은 C++ 함수의 프렌드 메커니즘은 어떻게 캡슐화를 깨뜨립니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!