C++에서 친구 함수는 다른 클래스의 전용 멤버에 액세스할 수 있는 특수 함수입니다. friend 함수의 선언에는 friend 키워드를 사용하며, 정의 시 접근 권한에 주의해야 합니다. Friend 함수는 컨테이너 클래스가 std::swap(), std::ostream_iterator 및 std::Vector와 같은 알고리즘과 상호 작용할 수 있도록 STL에서 광범위하게 사용됩니다.
C++ 친구 기능 상세 설명
친구 기능이란?
Friend 함수는 다른 클래스의 Private 멤버에 액세스할 수 있는 특수 함수입니다. 클래스 간 데이터 공유 및 조작이 가능합니다.
Friend 함수 선언
Friend 함수는 friend
키워드를 사용하여 선언할 수 있습니다. friend
关键字声明:
class MyClass { private: int x; public: friend void printX(MyClass& obj); };
友元函数定义
友元函数可以与通常的函数一样定义,但需要注意访问权限:
void printX(MyClass& obj) { cout << obj.x << endl; }
实战案例:STL 中的友元函数
标准模板库 (STL) 广泛使用了友元函数,以允许容器类与算法相交互:
1. std::swap()
用于交换两个容器元素的 std::swap()
函数是友元函数,因为它需要访问容器的私有成员:
template<typename T> void swap(T& a, T& b) { // ... 交换 a 和 b 的私有成员 ... }
2. std::ostream_iterator
用于输出容器元素的 std::ostream_iterator
类使用了友元函数来访问容器的 begin()
和 end()
方法:
template<class T> class ostream_iterator { friend ostream& operator<<(ostream& os, const ostream_iterator<T>& it); };
3. std::vector
std::vector
template<typename T> class vector { friend class std::allocator<T>; };
Friend 함수 정의
Friend 함수는 일반 함수처럼 정의할 수 있지만 주의가 필요합니다. 권한에 액세스하려면:rrreee
🎜실제 예: STL의 Friend 함수 🎜🎜🎜표준 템플릿 라이브러리(STL)는 컨테이너 클래스가 알고리즘과 상호 작용할 수 있도록 friend 함수를 광범위하게 사용합니다. 🎜🎜🎜1. )🎜🎜🎜두 컨테이너 요소를 교환하는 데 사용되는std::swap()
함수는 컨테이너의 비공개 멤버에 액세스해야 하기 때문에 친구 함수입니다: 🎜rrreee🎜🎜2. ostream_iterator🎜🎜🎜컨테이너 요소를 출력하는 데 사용되는 std::ostream_iterator
클래스는 friend 함수를 사용하여 컨테이너의 begin()
및 end()
에 액세스합니다. 메서드: 🎜rrreee🎜🎜3. std::Vector🎜🎜🎜std::Vector
클래스는 내부 구현에 액세스하기 위해 friend 함수를 사용합니다. 🎜rrreee🎜🎜결론🎜🎜🎜Friends 메타 함수는 다음과 같은 강력한 도구입니다. 클래스 간에 데이터를 공유하고 작업을 수행할 수 있는 C++입니다. Friend 함수는 STL에서 광범위하게 사용되어 컨테이너와 알고리즘 간의 원활한 상호 작용을 가능하게 합니다. 🎜위 내용은 C++ 친구 함수에 대한 자세한 설명: STL에서 친구 함수 적용?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!