Maison développement back-end C++ Interaction des expressions C++ Lambda avec la surcharge et la réécriture de fonctions

Interaction des expressions C++ Lambda avec la surcharge et la réécriture de fonctions

Apr 20, 2024 am 10:30 AM
c++ lambda 作用域

Les expressions Lambda interagissent avec la surcharge et la réécriture de fonctions en C++, fournissant un code flexible et réutilisable. Les expressions Lambda peuvent agir comme des fonctions surchargées, permettant l'utilisation d'expressions Lambda avec le même nom mais des paramètres différents ; elles peuvent également être utilisées pour remplacer des fonctions virtuelles dans une classe de base ; En utilisant des expressions lambda dans les surcharges de fonctions, vous pouvez fournir un comportement de fonction spécifique pour différents types de données ou calculs de forme.

C++Lambda 表达式与函数重载和重写的交互

Interaction des expressions Lambda avec la surcharge et la réécriture des fonctions C++

En C++, une expression Lambda est une fonction anonyme qui permet de définir et d'utiliser des fonctions sans déclarer de fonction nommée. Associés à la surcharge et à la réécriture de fonctions, ils offrent la possibilité d'exécuter du code plus flexible et réutilisable.

Surcharge de fonctions

La surcharge de fonctions permet aux fonctions portant le même nom d'accepter différents types et nombres de paramètres. Les fonctions surchargées sont différenciées en fonction de listes de paramètres et permettent de créer dans le code un comportement de fonction spécifique pour différents types de données.

Exemple :

double add(double a, double b) {
  return a + b;
}

int add(int a, int b) {
  return a + b;
}
Copier après la connexion

Dans cet exemple, nous avons surchargé la fonction nommée add, une pour l'addition en virgule flottante et l'autre pour l'addition d'entiers. add 的函数,一个用于浮点数加法,另一个用于整数加法。

Lambda 表达式

Lambda 表达式使用 [] 括号表示,其中包含捕获列表(可选),后面是参数列表和函数体。

示例:

auto addLambda = [](double a, double b) { return a + b; };
Copier après la connexion

此 Lambda 表达式表示了一个接受两个双精度浮点参数并返回其总和的函数。

函数重写

函数重写允许派生类覆盖基类中定义的函数。重写用于修改派生类中特定函数的行为,同时保留基类函数的名称和签名。

示例:

class Base {
public:
  virtual int add(int a, int b) {
    return a + b;
  }
};

class Derived : public Base {
public:
  int add(int a, int b) override {
    return a + b + 1;
  }
};
Copier après la connexion

在示例中,Derived 类重写了 Base 类中的 add

Expressions Lambda

Les expressions Lambda sont exprimées à l'aide de crochets [], qui contiennent une liste de capture (facultatif), suivie de la liste d'arguments et du corps de la fonction.
  • Exemple :
  • auto circleCircumference = [](double radius) { return 2 * M_PI * radius; };
    auto rectangleCircumference = [](double length, double width) { return 2 * (length + width); };
    
    double getCircumference(Shape shape) {
      if (shape.type == Circle) {
        return circleCircumference(shape.radius);
      } else if (shape.type == Rectangle) {
        return rectangleCircumference(shape.length, shape.width);
      } else {
        throw invalid_argument("Unknown shape type");
      }
    }
    Copier après la connexion
  • Cette expression Lambda représente une fonction qui accepte deux arguments à virgule flottante double précision et renvoie leur somme.
  • Remplacement de fonctions

    Le remplacement de fonctions permet à une classe dérivée de remplacer les fonctions définies dans une classe de base. Les remplacements sont utilisés pour modifier le comportement d'une fonction spécifique dans une classe dérivée tout en préservant le nom et la signature de la fonction de classe de base.

    Exemple :

    rrreee

    Dans l'exemple, la classe Derived remplace la fonction add dans la classe Base, en lui fournissant Modified comportement, ajoute 1 à la somme. 🎜🎜🎜Expressions Lambda avec surcharge et réécriture🎜🎜🎜🎜🎜Expressions Lambda avec surcharge : 🎜Les expressions Lambda peuvent agir comme des fonctions surchargées, permettant l'utilisation d'expressions Lambda avec le même nom mais des paramètres différents dans la même portée. 🎜🎜🎜Expressions Lambda et remplacement : 🎜Les expressions Lambda peuvent être utilisées pour remplacer les fonctions virtuelles dans les classes de base. Les classes dérivées peuvent fournir un comportement de fonction différent en attribuant une expression lambda à un pointeur de fonction de classe de base. 🎜🎜🎜🎜Cas pratique🎜🎜🎜Considérons un programme qui doit calculer le périmètre de différentes formes. Les expressions Lambda peuvent être définies pour calculer le périmètre de différentes formes et utilisées dans les surcharges de fonctions : 🎜rrreee🎜 Dans cet exemple, les expressions Lambda permettent une définition flexible des calculs de périmètre pour différentes formes et une intégration dans les surcharges de fonctions, fournissant ainsi un code évolutif et réutilisable. 🎜

    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.

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)

Quel est le rôle de char dans les chaînes C Quel est le rôle de char dans les chaînes C Apr 03, 2025 pm 03:15 PM

En C, le type de char est utilisé dans les chaînes: 1. Stockez un seul caractère; 2. Utilisez un tableau pour représenter une chaîne et se terminer avec un terminateur nul; 3. Faire fonctionner via une fonction de fonctionnement de chaîne; 4. Lisez ou sortant une chaîne du clavier.

Comment calculer C-SUBScript 3 Indice 5 C-SUBScript 3 Indice Indice 5 Tutoriel d'algorithme Comment calculer C-SUBScript 3 Indice 5 C-SUBScript 3 Indice Indice 5 Tutoriel d'algorithme Apr 03, 2025 pm 10:33 PM

Le calcul de C35 est essentiellement des mathématiques combinatoires, représentant le nombre de combinaisons sélectionnées parmi 3 des 5 éléments. La formule de calcul est C53 = 5! / (3! * 2!), Qui peut être directement calculé par des boucles pour améliorer l'efficacité et éviter le débordement. De plus, la compréhension de la nature des combinaisons et la maîtrise des méthodes de calcul efficaces est cruciale pour résoudre de nombreux problèmes dans les domaines des statistiques de probabilité, de la cryptographie, de la conception d'algorithmes, etc.

Définition du nom de la fonction dans le langage C Définition du nom de la fonction dans le langage C Apr 03, 2025 pm 10:03 PM

La définition du nom de fonction du langage C comprend: Type de valeur de retour, nom de fonction, liste de paramètres et corps de fonction. Les noms de fonction doivent être clairs, concis et unifiés dans le style pour éviter les conflits avec les mots clés. Les noms de fonction ont des lunettes et peuvent être utilisés après la déclaration. Les pointeurs de fonction permettent de passer des fonctions ou d'attribuer des arguments. Les erreurs communes incluent les conflits de dénomination, l'inadéquation des types de paramètres et les fonctions non déclarées. L'optimisation des performances se concentre sur la conception et la mise en œuvre des fonctions, tandis que le code clair et facile à lire est crucial.

Fonction de fonction distincte Distance de distance C Tutoriel d'utilisation Fonction de fonction distincte Distance de distance C Tutoriel d'utilisation Apr 03, 2025 pm 10:27 PM

STD :: Unique supprime les éléments en double adjacents dans le conteneur et les déplace jusqu'à la fin, renvoyant un itérateur pointant vers le premier élément en double. STD :: Distance calcule la distance entre deux itérateurs, c'est-à-dire le nombre d'éléments auxquels ils pointent. Ces deux fonctions sont utiles pour optimiser le code et améliorer l'efficacité, mais il y a aussi quelques pièges à prêter attention, tels que: std :: unique traite uniquement des éléments en double adjacents. STD :: La distance est moins efficace lorsqu'il s'agit de transacteurs d'accès non aléatoires. En maîtrisant ces fonctionnalités et les meilleures pratiques, vous pouvez utiliser pleinement la puissance de ces deux fonctions.

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.

Problèmes avec la version Dev-C Problèmes avec la version Dev-C Apr 03, 2025 pm 07:33 PM

Dev-C 4.9.9.2 Erreurs et solutions de compilation Lors de la compilation de programmes dans le système Windows 11 à l'aide de Dev-C 4.9.9.2, le volet d'enregistrement du compilateur peut afficher le message d'erreur suivant: GCCC.EXE: InternalError: Aborti (ProgramCollect2) Pleasesubmitafullbugreport.seeforinsstructions. Bien que la "compilation finale soit réussie", le programme réel ne peut pas s'exécuter et un message d'erreur "Archive de code d'origine ne peut pas être compilé" apparaît. C'est généralement parce que le linker recueille

C Programmer & # S Guide de comportement non défini C Programmer & # S Guide de comportement non défini Apr 03, 2025 pm 07:57 PM

Exploration des comportements non définis dans la programmation C: un guide détaillé Cet article introduit un livre électronique sur les comportements indéfinis en programmation C, un total de 12 chapitres couvrant certains des aspects les plus difficiles et les plus connus de la programmation C. Ce livre n'est pas un manuel d'introduction pour le langage C, mais s'adresse aux lecteurs familiers avec la programmation du langage C, et explore en profondeur diverses situations et conséquences potentielles de comportements non définis. Auteur Dmitrysviridkin, rédacteur en chef Andrey Karpov. Après six mois de préparation minutieuse, ce livre électronique a finalement rencontré des lecteurs. Les versions imprimées seront également lancées à l'avenir. Ce livre devait initialement inclure 11 chapitres, mais pendant le processus de création, le contenu a été enrichi en continu et finalement étendu à 12 chapitres - c'est lui-même un cas de baisse de tableau classique, et il peut être considéré comme un programmeur C C

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.

See all articles