Maison >développement back-end >C++ >Explication détaillée des fonctions amies C++ : Comment utiliser les fonctions amies dans les classes modèles ?

Explication détaillée des fonctions amies C++ : Comment utiliser les fonctions amies dans les classes modèles ?

王林
王林original
2024-04-29 09:45:02818parcourir

En C++, les fonctions amies peuvent accéder aux membres privés d'une classe sans devenir une fonction membre de la classe. Dans une classe modèle, la déclaration d'une fonction amie est similaire à la déclaration d'une classe normale et doit être déclarée en dehors de la définition de la classe. Par exemple, pour déclarer la fonction ami printValue dans la classe modèle MyClass, vous devez déclarer la fonction en dehors de la définition de classe à l'aide du mot-clé ami. Une fonction ami ne peut accéder qu’aux membres de la classe dans laquelle elle est déclarée ami.

C++ 友元函数详解:友元函数在模板类中的使用?

Explication détaillée de la fonction ami C++ : utilisation dans les classes de modèles

Introduction

Une fonction ami est un type spécial de fonction en C++ qui est autorisé à accéder aux membres privés d'une classe, sans devenir membre fonction de la classe. Les fonctions Friend sont utiles dans certaines situations, par exemple lorsque des données ou des fonctionnalités doivent être partagées au-delà des limites de classe.

Fonctions d'ami dans les classes de modèles

La déclaration des fonctions d'ami dans une classe de modèle est très similaire à celle d'une classe normale. L'exemple suivant montre comment déclarer une fonction ami printValue dans la classe modèle MyClass : MyClass 中声明友元函数 printValue

template <typename T>
class MyClass {
public:
  T value;

  friend void printValue(const MyClass<T>& obj) {
    std::cout << "Value: " << obj.value << std::endl;
  }
};

使用友元函数

要使用友元函数,必须在类的定义外部声明该函数。可以使用 friend 关键字来指定友元函数,如下所示:

template <typename T>
void printValue(const MyClass<T>& obj);

实战案例

假设我们有一个 Node 模板类,其中包含私有数据成员 value,并想要声明一个友元函数 display 来显示节点的值。

template <typename T>
class Node {
public:
  T value;

  friend void display(const Node<T>& node) {
    std::cout << "Node Value: " << node.value << std::endl;
  }
};

在编写友元函数时,需要注意以下几点:

  • 函数必须在类的定义外部声明。
  • 函数原型不能有 constvirtualrrreee
  • Utilisation des fonctions ami
🎜Pour utiliser les fonctions ami, vous devez déclarer le fonction en dehors de la définition. Les fonctions Friend peuvent être spécifiées à l'aide du mot-clé friend, comme indiqué ci-dessous : 🎜rrreee🎜🎜Cas pratique🎜🎜🎜Supposons que nous ayons une classe de modèle Node qui contient un membre de données privé value, et souhaitez déclarer une fonction amie display pour afficher la valeur du nœud. 🎜rrreee🎜Lors de l'écriture de fonctions amies, vous devez faire attention aux points suivants : 🎜
    🎜La fonction doit être déclarée en dehors de la définition de la classe. 🎜🎜Le prototype de fonction ne peut pas avoir de modificateur const ou virtuel. 🎜🎜Une fonction ne peut accéder qu'aux membres de la classe qui la déclare comme ami. 🎜🎜

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