En C++, une fonction ami est une fonction spéciale qui peut accéder aux membres privés d'autres classes. La déclaration d'une fonction ami utilise le mot-clé ami, et vous devez faire attention aux autorisations d'accès lors de sa définition. Les fonctions Friend sont largement utilisées dans la STL pour permettre aux classes de conteneurs d'interagir avec des algorithmes, tels que std :: swap (), std :: ostream_iterator et std :: vector.
C++ Explication détaillée des fonctions ami
Qu'est-ce qu'une fonction ami ?
La fonction Ami est une fonction spéciale qui peut accéder aux membres privés d'autres classes. Il permet le partage et la manipulation de données entre les classes.
Déclaration de la fonction ami
Les fonctions ami peuvent être déclarées à l'aide du mot-clé ami
: 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>; };
Définition de la fonction ami
Les fonctions ami peuvent être définies comme des fonctions normales, mais il faut faire attention pour accéder aux autorisations :rrreee
🎜Exemple pratique : fonctions Friend en STL 🎜🎜🎜La bibliothèque de modèles standard (STL) utilise largement les fonctions Friend pour permettre aux classes conteneurs d'interagir avec les algorithmes : 🎜🎜🎜1. )🎜🎜🎜La fonctionstd::swap()
utilisée pour échanger deux éléments du conteneur est une fonction amie car elle doit accéder aux membres privés du conteneur : 🎜rrreee🎜🎜2. ostream_iterator🎜🎜🎜La classe std::ostream_iterator
utilisée pour afficher les éléments du conteneur utilise des fonctions amies pour accéder aux begin()
et end()
du conteneur. Méthode : 🎜rrreee🎜🎜3. La classe std::vector🎜🎜🎜std::vector
utilise des fonctions d'ami pour accéder à son implémentation interne : 🎜rrreee🎜🎜Conclusion🎜🎜🎜Les métafonctions Friends sont des outils puissants dans C++ qui permet de partager des données et d'effectuer des opérations entre les classes. Les fonctions Friend sont largement utilisées dans STL pour permettre une interaction transparente entre les conteneurs et les algorithmes. 🎜Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!