C では、フレンド関数は、他のクラスのプライベート メンバーにアクセスできる特別な関数です。 friends関数の宣言にはfriendキーワードを使用するため、定義時にはアクセス権限に注意する必要があります。フレンド関数は STL で広範囲に使用され、コンテナ クラスが std::swap()、std::ostream_iterator、std::vector などのアルゴリズムと対話できるようにします。
C フレンド機能の詳しい説明
フレンド機能とは?
フレンド関数は、他のクラスのプライベート メンバーにアクセスできる特別な関数です。これにより、クラス間でのデータの共有と操作が可能になります。
フレンド関数宣言
フレンド関数は、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()
# 2 つのコンテナー要素の交換に使用される##std::swap() 関数は、コンテナーのプライベート メンバー
template<typename T> void swap(T& a, T& b) { // ... 交换 a 和 b 的私有成员 ... }
2 にアクセスする必要があるため、フレンド関数です。 ::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 クラスは、 friends 関数を使用して内部実装にアクセスします。 :
template<typename T> class vector { friend class std::allocator<T>; };
結論
フレンド関数は、クラス間でデータを共有し、操作を実行できるようにする C の強力なツールです。 STL ではフレンド関数が広範囲に使用され、コンテナとアルゴリズム間のシームレスな対話を可能にします。以上がC++のフレンド関数の詳しい解説: STLでのフレンド関数の応用?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。