Table des matières
Une alternative aux fonctions ami
Maison développement back-end C++ Quelles sont les alternatives aux fonctions d'ami ?

Quelles sont les alternatives aux fonctions d'ami ?

Apr 16, 2024 pm 05:18 PM
封装性 alternative fonction ami

Les alternatives aux fonctions amies sont : Méthodes de classe d'encapsulation : définissez des méthodes dans la partie privée de la classe et exposez-les en tant que fonctions amies pour maintenir l'encapsulation et autoriser l'accès externe aux membres privés. Mode pont : utilisez la classe pont pour contenir un pointeur vers la classe cible et ajoutez-y une fonction ami pour déléguer la méthode de la classe cible. Métaprogrammation de modèles : utilisez la métaprogrammation de modèles pour manipuler les membres de la classe au moment de la compilation afin de permettre l'accès aux membres privés.

Quelles sont les alternatives aux fonctions dami ?

Une alternative aux fonctions ami

Une fonction ami est un type spécial de fonction qui peut accéder aux membres privés d'autres classes. Bien que les fonctions amies soient pratiques, elles brisent également l’encapsulation. Par conséquent, lors de la conception d’une classe, il est préférable d’éviter autant que possible d’utiliser les fonctions amies.

Voici quelques alternatives aux fonctions amies :

Encapsuler les méthodes de classe  :

Définissez une méthode dans la partie privée de la classe et exposez-la en tant que fonction amie. Cela maintient l'encapsulation tout en permettant aux fonctions externes d'accéder aux membres privés.

Utiliser le modèle de pont :

Créez une classe de pont qui contient un pointeur vers la classe de destination. Ajoutez la fonction ami à la classe pont, puis déléguez les méthodes de la classe cible à la fonction ami.

Utilisation de la métaprogrammation de modèles :

Utilisez la métaprogrammation de modèles au moment de la compilation pour manipuler les membres de la classe. Cette méthode est plus complexe, mais permet d'accéder aux membres privés au moment de l'exécution.

Cas pratique :

Supposons que nous ayons une Person 类,其私有成员为 nameage。我们要定义一个 printInfo 函数来打印 Personinformation.

// 使用封装类方法
class Person {
private:
    std::string name;
    int age;

    friend void printInfo(const Person& p) {
        std::cout << "Name: " << p.name << std::endl;
        std::cout << "Age: " << p.age << std::endl;
    }
};

// 使用桥接模式
class PersonBridge {
private:
    Person* person;

public:
    PersonBridge(Person* p) : person(p) {}

    void printInfo() {
        std::cout << "Name: " << person->name << std::endl;
        std::cout << "Age: " << person->age << std::endl;
    }
};

// 使用模板元编程
template <typename T>
void printInfo(const T& p) {
    std::cout << "Name: " << p.name << std::endl;
    std::cout << "Age: " << p.age << std::endl;
}
Copier après la connexion

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

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

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)

Quelle est la signification de la fermeture dans l'expression lambda C++ ? Quelle est la signification de la fermeture dans l'expression lambda C++ ? Apr 17, 2024 pm 06:15 PM

En C++, une fermeture est une expression lambda qui peut accéder à des variables externes. Pour créer une fermeture, capturez la variable externe dans l'expression lambda. Les fermetures offrent des avantages tels que la réutilisabilité, la dissimulation des informations et une évaluation paresseuse. Ils sont utiles dans des situations réelles telles que les gestionnaires d'événements, où la fermeture peut toujours accéder aux variables externes même si elles sont détruites.

Explication détaillée des fonctions amies C++ : quel est le rôle des fonctions amies dans l'héritage multiple ? Explication détaillée des fonctions amies C++ : quel est le rôle des fonctions amies dans l'héritage multiple ? Apr 29, 2024 pm 06:39 PM

Les fonctions amies permettent aux fonctions non membres d'accéder aux membres privés et de jouer un rôle dans l'héritage multiple, permettant aux fonctions de classe dérivées d'accéder aux membres privés de la classe de base.

Les définitions de fonctions et les appels en C++ peuvent-ils être imbriqués ? Les définitions de fonctions et les appels en C++ peuvent-ils être imbriqués ? May 06, 2024 pm 06:36 PM

Peut. C++ autorise les définitions et les appels de fonctions imbriquées. Les fonctions externes peuvent définir des fonctions intégrées et les fonctions internes peuvent être appelées directement dans la portée. Les fonctions imbriquées améliorent l'encapsulation, la réutilisabilité et le contrôle de la portée. Cependant, les fonctions internes ne peuvent pas accéder directement aux variables locales des fonctions externes et le type de valeur de retour doit être cohérent avec la déclaration de la fonction externe. Les fonctions internes ne peuvent pas être auto-récursives.

Avantages et inconvénients de l'encapsulation Java : compromis entre confidentialité et maintenabilité Avantages et inconvénients de l'encapsulation Java : compromis entre confidentialité et maintenabilité Mar 16, 2024 pm 10:07 PM

Restrictions d'accès : l'encapsulation limite l'accès aux données internes et il peut parfois être difficile d'accéder aux informations nécessaires. Inflexibilité potentielle : une encapsulation stricte peut limiter la personnalisation du code, ce qui rend difficile son ajustement à des besoins spécifiques. Difficulté de test : l'encapsulation peut rendre difficile le test de l'implémentation interne car l'accès externe est restreint. Redondance du code : pour maintenir l'encapsulation, il est parfois nécessaire de dupliquer le code, par exemple en créant plusieurs méthodes getter et setter. Surcharge de performances : l'accès aux membres privés nécessite des méthodes getter et setter, ce qui peut entraîner une surcharge de performances supplémentaire. Évaluez la confidentialité et la maintenabilité : lors de l'évaluation de la confidentialité et de la maintenabilité, les facteurs suivants doivent être pris en compte : Exigences de sécurité : si les données sont très sensibles, la priorité en matière de confidentialité peut être élevée.

Pratiques de codage PHP : refuser les alternatives aux instructions Goto Pratiques de codage PHP : refuser les alternatives aux instructions Goto Mar 28, 2024 pm 09:24 PM

Pratiques de codage PHP : refus d'utiliser des alternatives aux instructions Goto Ces dernières années, avec la mise à jour et l'itération continues des langages de programmation, les programmeurs ont commencé à accorder plus d'attention aux spécifications de codage et aux meilleures pratiques. Dans la programmation PHP, l'instruction goto existe depuis longtemps en tant qu'instruction de flux de contrôle, mais dans les applications pratiques, elle entraîne souvent une diminution de la lisibilité et de la maintenabilité du code. Cet article partagera quelques alternatives pour aider les développeurs à refuser d'utiliser les instructions goto et à améliorer la qualité du code. 1. Pourquoi refuser d’utiliser l’instruction goto ? Tout d'abord, réfléchissons à pourquoi

Meilleures pratiques PHP : alternatives pour éviter les instructions Goto explorées Meilleures pratiques PHP : alternatives pour éviter les instructions Goto explorées Mar 28, 2024 pm 04:57 PM

Meilleures pratiques PHP : alternatives pour éviter les instructions Goto explorées Dans la programmation PHP, une instruction goto est une structure de contrôle qui permet un saut direct vers un autre emplacement dans un programme. Bien que l'instruction goto puisse simplifier la structure du code et le contrôle de flux, son utilisation est largement considérée comme une mauvaise pratique car elle peut facilement entraîner une confusion dans le code, une lisibilité réduite et des difficultés de débogage. Dans le développement réel, afin d'éviter d'utiliser les instructions goto, nous devons trouver des méthodes alternatives pour obtenir la même fonction. Cet article explorera quelques alternatives,

Une lecture incontournable pour les développeurs PHP : alternatives recommandées à mb_substr() Une lecture incontournable pour les développeurs PHP : alternatives recommandées à mb_substr() Mar 15, 2024 pm 05:06 PM

Dans le développement PHP, l'interception de chaînes est souvent utilisée. Dans les développements précédents, nous utilisions souvent la fonction mb_substr() pour intercepter les caractères multi-octets. Cependant, avec la mise à jour des versions de PHP et le développement de la technologie, de meilleures alternatives sont apparues, capables de gérer plus efficacement l'interception des caractères multi-octets. Cet article présentera des alternatives à la fonction mb_substr() et donnera des exemples de code spécifiques. Pourquoi vous devez remplacer la fonction mb_substr() dans les versions antérieures de PHP, m

Comment exporter un programme C++ Comment exporter un programme C++ Apr 22, 2024 pm 05:45 PM

Les symboles, y compris les fonctions, les variables et les classes, sont exportés en C++ via le mot-clé extern « C ». Les symboles exportés sont extraits et utilisés selon les règles du langage C entre les unités de compilation ou lors de l'interaction avec d'autres langages.

See all articles