Maison développement back-end C++ La relation entre les fonctions amies C++ et la surcharge

La relation entre les fonctions amies C++ et la surcharge

Apr 16, 2024 am 11:06 AM
c++ 重载 作用域 fonction ami

Oui, les fonctions amies peuvent être surchargées. Comme d'autres fonctions, les fonctions amies surchargées doivent avoir des listes de paramètres différentes, comme la classe Vector3D dans l'exemple, qui a des fonctions amies surchargées opérateur+() et opérateur -(), permettant l'addition et la soustraction. opérateurs à appliquer aux objets Vector3D.

C++ 友元函数与重载的关系

La relation entre les fonctions amies et la surcharge en C++

Fonctions amies

Une fonction amie est un type spécial de fonction qui peut accéder aux membres privés d'autres classes. En d’autres termes, ce n’est pas une fonction membre de la classe, mais dispose des mêmes droits d’accès qu’une fonction membre.

Définir des fonctions amies :

class ClassName {
  // ...

  friend function_name();
};
Copier après la connexion

Surcharge

La surcharge est la possibilité de créer plusieurs fonctions avec le même nom mais des listes de paramètres différentes dans la même portée. Cela signifie que lorsqu'une fonction surchargée est appelée, le compilateur déterminera quelle fonction appeler en fonction des arguments.

Interaction entre les fonctions amies et surcharge

Les fonctions amies peuvent être surchargées. Comme les autres fonctions, les fonctions amies surchargées doivent avoir des listes de paramètres différentes.

Cas pratique

Exemple de classe :

class Vector3D {
  double x, y, z;

public:
  Vector3D(double x, double y, double z) : x(x), y(y), z(z) {}

  friend Vector3D operator+(const Vector3D& lhs, const Vector3D& rhs);
  friend Vector3D operator-(const Vector3D& lhs, const Vector3D& rhs);
};
Copier après la connexion

Fonction ami surchargée :

Vector3D operator+(const Vector3D& lhs, const Vector3D& rhs) {
  return Vector3D(lhs.x + rhs.x, lhs.y + rhs.y, lhs.z + rhs.z);
}

Vector3D operator-(const Vector3D& lhs, const Vector3D& rhs) {
  return Vector3D(lhs.x - rhs.x, lhs.y - rhs.y, lhs.z - rhs.z);
}
Copier après la connexion

Utilisation :

Vector3D v1(1, 2, 3), v2(4, 5, 6);

Vector3D v3 = v1 + v2;  // 调用重载的友元函数 operator+()
Vector3D v4 = v1 - v2;  // 调用重载的友元函数 operator-()
Copier après la connexion

Dans cet exemple, nous définissons un Vector3D 类及其重载的友元函数 operator+()operator-()。这些友元函数允许我们对 Vector3D objet en utilisant addition et sub opérateur de traction.

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 de ce site Web
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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Utilisation de la libération de la release en C Utilisation de la libération de la release en C Apr 04, 2025 am 07:54 AM

La fonction release_semaphore en C est utilisée pour libérer le sémaphore obtenu afin que d'autres threads ou processus puissent accéder aux ressources partagées. Il augmente le nombre de sémaphore de 1, permettant au fil de blocage de continuer l'exécution.

Comment enregistrer les composants exportés par défaut d'exportation en Vue Comment enregistrer les composants exportés par défaut d'exportation en Vue Apr 07, 2025 pm 06:24 PM

Question: Comment enregistrer un composant VUE exporté via l'exportation par défaut? Réponse: Il existe trois méthodes d'enregistrement: Enregistrement global: utilisez la méthode Vue.Component () pour vous inscrire en tant que composant global. Inscription locale: Inscrivez-vous dans l'option Composants, disponible uniquement dans le composant actuel et ses sous-composants. Enregistrement dynamique: utilisez la méthode Vue.Component () pour vous inscrire après le chargement du composant.

CHARRAMMAGE C ET CHARRAMMAGE C ET Apr 06, 2025 am 12:06 AM

C convient à la programmation système et à l'interaction matérielle car elle fournit des capacités de contrôle proches du matériel et des fonctionnalités puissantes de la programmation orientée objet. 1) C Grâce à des fonctionnalités de bas niveau telles que le pointeur, la gestion de la mémoire et le fonctionnement des bits, un fonctionnement efficace au niveau du système peut être réalisé. 2) L'interaction matérielle est implémentée via des pilotes de périphérique, et C peut écrire ces pilotes pour gérer la communication avec des périphériques matériels.

Variables inutilisées en c / c: Pourquoi et comment? Variables inutilisées en c / c: Pourquoi et comment? Apr 03, 2025 pm 10:48 PM

Dans l'examen du code C / C, il existe souvent des cas où les variables ne sont pas utilisées. Cet article explorera les raisons courantes des variables inutilisées et expliquera comment amener le compilateur à émettre des avertissements et comment supprimer les avertissements spécifiques. Causes des variables inutilisées Il existe de nombreuses raisons pour les variables inutilisées dans le code: défauts ou erreurs de code: la raison la plus directe est qu'il y a des problèmes avec le code lui-même, et les variables peuvent ne pas être nécessaires du tout, ou elles sont nécessaires mais pas utilisées correctement. Refactorisation de code: Pendant le processus de développement logiciel, le code sera modifié et refactorisé en permanence, et certaines variables une fois importantes peuvent être laissées pour compte et inutilisées. Variables réservées: les développeurs peuvent prédéceller certaines variables pour une utilisation future, mais ils ne seront pas utilisés à la fin. Compilation conditionnelle: certaines variables ne peuvent être que dans des conditions spécifiques (comme le mode de débogage)

Python vs C: applications et cas d'utilisation comparés Python vs C: applications et cas d'utilisation comparés Apr 12, 2025 am 12:01 AM

Python convient à la science des données, au développement Web et aux tâches d'automatisation, tandis que C convient à la programmation système, au développement de jeux et aux systèmes intégrés. Python est connu pour sa simplicité et son écosystème puissant, tandis que C est connu pour ses capacités de contrôle élevées et sous-jacentes.

Comment résoudre le problème de la fermeture d'Oracle Cursor Comment résoudre le problème de la fermeture d'Oracle Cursor Apr 11, 2025 pm 10:18 PM

La méthode pour résoudre le problème de fermeture du curseur Oracle comprend: la fermeture explicite du curseur à l'aide de l'instruction Close. Déclarez le curseur dans la clause de mise à jour pour la fermeture automatiquement après la fin de la portée. Déclarez le curseur dans la clause d'utilisation afin qu'il se ferme automatiquement lorsque la variable PL / SQL associée est fermée. Utilisez la gestion des exceptions pour vous assurer que le curseur est fermé dans toute situation d'exception. Utilisez le pool de connexion pour fermer automatiquement le curseur. Désactiver la soumission automatique et le délai de fermeture du curseur.

MySQL Téléchargement Invite les erreurs d'écriture du disque Comment gérer MySQL Téléchargement Invite les erreurs d'écriture du disque Comment gérer Apr 08, 2025 am 11:51 AM

Le téléchargement MySQL invite une erreur d'écriture de disque. La solution est la suivante: 1. Vérifiez si l'espace disque est insuffisant, nettoyez l'espace ou remplacez un disque plus grand; 2. Utilisez des outils de détection de disque (tels que CHKDSK ou FSCK) pour vérifier et corriger les erreurs de disque, et remplacer le disque dur si nécessaire; 3. Vérifiez les autorisations de répertoire cible pour vous assurer que le compte d'utilisateur a des autorisations d'écriture; 4. Modifiez l'outil de téléchargement ou l'environnement réseau et utilisez le gestionnaire de téléchargement pour restaurer le téléchargement interrompu; 5. Fermez temporairement le logiciel ou le pare-feu antivirus et le réactiver une fois le téléchargement terminé. En dépannage systématiquement ces aspects, le problème peut être résolu.

L'utilisation continue de C: Raisons de son endurance L'utilisation continue de C: Raisons de son endurance Apr 11, 2025 am 12:02 AM

C Les raisons de l'utilisation continue incluent ses caractéristiques élevées, une application large et en évolution. 1) Performances à haute efficacité: C fonctionne parfaitement dans la programmation système et le calcul haute performance en manipulant directement la mémoire et le matériel. 2) Largement utilisé: briller dans les domaines du développement de jeux, des systèmes intégrés, etc. 3) Évolution continue: depuis sa sortie en 1983, C a continué à ajouter de nouvelles fonctionnalités pour maintenir sa compétitivité.

See all articles