Maison  >  Article  >  développement back-end  >  Les fonctions amies C++ peuvent-elles être déclarées en dehors d’une classe ?

Les fonctions amies C++ peuvent-elles être déclarées en dehors d’une classe ?

王林
王林original
2024-04-16 15:42:011074parcourir

En C++, les fonctions ami peuvent être déclarées en dehors de la classe, mais elles doivent être immédiatement adjacentes à la définition de la classe, commencer par le mot-clé ami et ne sont pas limitées par la portée de la classe.

C++ 友元函数可以在类外声明吗?

Les fonctions amies C++ peuvent-elles être déclarées en dehors d'une classe ?

Préface
Les fonctions d'ami sont des fonctions spéciales qui accèdent aux membres privés/protégés d'une classe en dehors de la classe. Ils sont déclarés en dehors de la définition de la classe. Cet article abordera les règles de déclaration hors classe pour les fonctions amies en C++ et fournira des cas pratiques à illustrer.

Règles de déclaration hors classe
En C++, les fonctions ami peuvent être déclarées en dehors de la classe, mais vous devez faire attention aux règles suivantes :

  1. La déclaration ami doit être immédiatement adjacente à la définition de la classe : La déclaration de la fonction Friend doit être immédiatement adjacente. Après la définition de la classe, commencez par le mot-clé friend.
  2. friend 关键字开头。
  3. 友元与类的作用域无关:友元函数的声明不受类作用域的限制,可以在类的任何地方声明。

实战案例

下面是一个展示友元函数类外声明的实战案例:

// 类 Person 定义
class Person {
private:
  std::string name_; // 私有成员变量

public:
  Person(const std::string& name) : name_(name) {}
};

// 友元函数声明(在 Person 类外)
friend std::ostream& operator<<(std::ostream& os, const Person& person);

// 主函数
int main() {
  Person p("John Doe");
  std::cout << p << std::endl; // 调用友元函数
}

// 友元函数定义(在 Person 类外)
std::ostream& operator<<(std::ostream& os, const Person& person) {
  os << person.name_;
  return os;
}

代码解释
在这个例子中:

  • Person 类定义包含一个私有成员变量 name_
  • operator<< 函数声明为 Person 类的友元函数,并置于类的定义之后。
  • 在主函数中,创建了一个 Person 对象并输出其 name_ 值,这需要调用友元函数。
  • 友元函数的定义也在类的外部进行,它访问 name_ 私有成员变量并输出它的值。

结论
C++ 中的友元函数可以在类的外部声明,但必须紧邻类的定义并使用 friend

Les amis n'ont rien à voir avec la portée de la classe : 🎜La déclaration des fonctions amies n'est pas limitée par la portée de la classe et peut être déclarée n'importe où dans la classe. 🎜🎜Cas pratique🎜🎜🎜Ce qui suit est un cas pratique montrant la déclaration hors classe d'une fonction ami :🎜rrreee🎜🎜Explication du code🎜🎜Dans cet exemple :🎜
    🎜 La définition de la classe Person contient une variable membre privée name_. 🎜operator<< La fonction est déclarée comme fonction amie de la classe Person et placée après la définition de la classe. 🎜Dans la fonction principale, un objet Person est créé et sa valeur name_ est affichée, ce qui nécessite d'appeler la fonction ami. 🎜La fonction Friend est également définie en dehors de la classe. Elle accède à la variable membre privée name_ et affiche sa valeur.
🎜🎜Conclusion🎜🎜Les fonctions Friend en C++ peuvent être déclarées en dehors d'une classe, mais doivent être immédiatement adjacentes à la définition de la classe et utiliser le mot-clé friend. La déclaration d'une fonction ami n'est pas limitée par la portée de la classe, offrant ainsi la flexibilité d'accéder aux membres privés en dehors de la classe. Pour plus de clarté et de lisibilité, il est recommandé de déclarer les fonctions amies à proximité de la définition de la classe. 🎜

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