Une fonction ami C++ est une fonction spéciale qui donne accès aux membres privés et protégés d'une autre classe. Les fonctions non membres peuvent interagir avec une classe spécifique en déclarant des fonctions amies. Les applications des fonctions amies incluent la surcharge d'opérateurs, les opérations d'E/S et l'implémentation sous-jacente. Par exemple, les fonctions ami peuvent être utilisées pour surcharger l'opérateur + afin de prendre en charge les opérations entre types de données personnalisés, comme illustré dans le cas suivant : class Vector { public:friend Vector Operator+(const Vector& v1, const Vector& v2 } ;
);
C++ Explication détaillée des fonctions ami : Application en conception orientée objet
Qu'est-ce qu'une fonction ami ?
En C++, une fonction ami est une fonction spéciale qui accorde l'accès aux membres privés et protégés d'une autre classe. Cela permet aux fonctions non membres d'interagir avec une classe spécifique sans avoir à être déclarées comme fonction membre de la classe.
Comment déclarer une fonction ami ?
Il existe deux manières de déclarer les fonctions d'ami :
class MyClass { friend void myFriendFunction(); };
friend
: friend
关键字声明:class MyClass; // 前向声明 void myFriendFunction() { MyClass obj; // 访问 MyClass 的私有成员 }
友元函数的应用
友元函数在面向对象设计中有多种应用,包括:
+
和 *
,以支持自定义数据类型之间的运算。<<
和
,以简化对象序列化。实战案例:操作符重载
以下代码示例展示了如何使用友元函数来重载 +
运算符,以支持两个 Vector
对象的加法:
class Vector { int x, y; public: Vector(int _x, int _y) : x(_x), y(_y) {} friend Vector operator+(const Vector& v1, const Vector& v2); }; Vector operator+(const Vector& v1, const Vector& v2) { return Vector(v1.x + v2.x, v1.y + v2.y); } int main() { Vector v1(1, 2), v2(3, 4); Vector v3 = v1 + v2; // 使用重载的 + 运算符 return 0; }
在上面的示例中,operator+
函数是一个友元函数,它允许非成员函数访问 Vector
类的私有数据成员 x
和 y
+
et * pour prendre en charge les opérations entre les types de données personnalisés. 🎜🎜🎜Opérations d'E/S : 🎜Les fonctions d'ami peuvent fournir des fonctions d'E/S aux classes, telles que <<
et
pour simplifier la sérialisation des objets. 🎜🎜🎜Implémentation sous-jacente : 🎜Les fonctions Friend peuvent accéder aux membres privés d'une classe pour implémenter des algorithmes complexes ou des structures de données internes. 🎜🎜🎜🎜Cas pratique : surcharge d'opérateur🎜🎜🎜L'exemple de code suivant montre comment utiliser les fonctions d'ami pour surcharger l'opérateur +
afin de prendre en charge deux objets Vector
Ajout : 🎜rrreee 🎜Dans l'exemple ci-dessus, la fonction operator+
est une fonction amie qui permet aux fonctions non membres d'accéder aux données privées membres xVector
> et y
. 🎜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!