Maison  >  Article  >  développement back-end  >  Explication détaillée des fonctions amies C++ : Application des fonctions amies en STL ?

Explication détaillée des fonctions amies C++ : Application des fonctions amies en STL ?

王林
王林original
2024-04-30 08:42:01523parcourir

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++ 友元函数详解:友元函数在STL中的应用?

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 fonction std::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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn