Opérateur Surcharge en C ++

Opérateur Surcharge en C ++
3 (60%) 2 votes





перегрузка операторов c++, перегрузка операторов с++, surcharge c ++ opérations, перегрузopérateur surcharge c ++

Opérateur de surcharge dans une certaine mesure, le processus de création. Avec son aide, programmeurs, il est possible de rendre plus facile pour vous d'écrire le code, et d'autres – améliorer la lisibilité. par exemple, quand une action doit être répétée à plusieurs reprises dans le code, et l'utilisation juste douloureusement permanent pour cette fonction spéciale – Vous pouvez surcharger un opérateur pour cette. LET, dans le code, il est nécessaire de combiner souvent ligne (ajouter une chaîne à un élément de classe de chaîne). Il peut être conçu de différentes façons. Mais nous allons le faire, à la concaténation de chaîne est passé ensuite, lorsque nous utilisons l'opérateur + :

Le résultat devrait être un changement dans la cellule str. Lui et un à deux lignes: “Le nom de notre site Web PureCodeCpp”.

Alors que nous sommes évidemment pas surcharger le +, compilateur “jurer”, puisque nous n'ajoutons les chiffres, et la ligne. Mais maintenant, nous apprenons comment lui dire, comment agir, lorsque nous demandons d'effectuer une action non-standard, en utilisant +.

Obtenir la pratique. Définir dans l'exemple 4 lignes. Ensuite, recueillir une anecdote, en les combinant dans le bon ordre dans une ligne.

Il ne faut pas parler de l'évidence – procéder à l'examen le plus de surcharge. En ligne 15 nous voyons un prototype d'une méthode de classe Surcharge: vide opérateur +(carboniser*); Cette méthode provoque l'opérateur de travailler + si, que nous voulons (que l'on définit ci-dessous). Pour surcharger un opérateur que vous souhaitez utiliser le mot-clé opérateur. Dans ce cas,, méthode ne renvoie pas les valeurs ainsi vide, En outre mot-clé opérateur et l'opérateur lui-même +. Il adopte cette méthode sur un pointeur de chaîne.

lignes 20 – 23 Il est de la définition du procédé de l'opérateur surcharge. (Comment définir une méthode de la classe est décrite dans l'article Classes en C ++) il, en utilisant la fonction strcat_s(str, s); ligne produit un record s en fin de ligne str (élément de classe). Actes de façon – dès que ce code est conforme à l'opérateur + qui sera situé derrière la ligne – méthode est appelée la surcharge des opérateurs et cette ligne est transférée à l'enseigne.

La fonction principale, nous avons déterminé au hasard 4 lignes. Affichez-les sur l'écran (lignes 39 – 42). dessous, en ligne 44, objet déclaré Blague. Au moment de sa création,, concepteur de classe, nettoyer l'élément de classe str à partir de “déchets” et il sera prêt à enregistrer des lignes. Il suffit de suivre ces étapes simples (lignes 46 – 49) – en utilisant surchargé + écrire toutes les lignes dans une (str) dans le bon ordre.

résultat:

перегрузка операторов c++,  opérateur surcharge c ++

tout ce qui est arrivé. un autre, comme on le voit dans le résultat, pour l'opérateur de données numériques + charger correctement. Par conséquent, il peut être utilisé sans danger pour les opérations arithmétiques dans le code – vous compilateur “comprendront”. un autre point – opérateur de surcharge agit uniquement dans la classe, pour lequel il est défini. Si nous définissons une autre classe (Surcharge2 par exemple) mais pas l'accabler pour l'opérateur, la tentative d'utilisation + les lignes d'enregistrement qui conduisent à une erreur.




Il y a un certain nombre d'exceptions en C ++ – pas tous les opérateurs peuvent être surchargés. Voici une liste:

перегрузка операторов c++,  opérateur surcharge c ++

Et un peu de théorie:

– opérateurs de surcharge ne peuvent pas changer la priorité et l'ordre des opérations;

– il n'y a aucune possibilité, via la surcharge, créer de nouveaux symboles pour les opérations;

– opérateurs binaires ne peuvent pas être utilisés pour remplacer l'opération unaire, et vice-versa – unaire pas remplacer opération binaire.

opérateur Surcharge, bien sûr, “chose” intéressant. Il suffit de ne pas se laisser emporter. Utilisez-le uniquement lorsque cela est absolument nécessaire – si elle va vraiment apporter plus de confort, vous permet d'économiser du temps et influer positivement sur la lisibilité du code. Essayez de surcharger les opérateurs afin, qu'il soit aussi proche que possible de sa valeur logique,. C'est, il est nécessaire de la ligne de pliage, la surcharge des opérateurs , par exemple. Il est plus logique d'utiliser +. Je note, que de nombreux programmeurs n'aiment pas la surcharge des opérateurs, comme certains trop friands de lui, et il devient difficile de lire le code. Donc peser soigneusement les avantages et les inconvénients, décider de la surcharge des opérateurs.

Je prévois à l'avenir pour écrire un autre article sur la surcharge des opérateurs, où les exemples que je veux montrer comment surcharger ++ incrément, décroissance, == égalité, = affectation Nouveau et effacer. Si je ne pouvais pas oublier :)

Il y a des vidéos sur le sujet. auteur MyNekis.

Pour soutenir notre site – cliquez sur la tirelire et choisir un moyen pratique.

Bulletin de nouvelles leçons sur la programmation:

Une réflexion sur "Opérateur Surcharge en C ++

  1. >> par exemple, quand une action doit être répétée à plusieurs reprises dans le code, et l'utilisation juste douloureusement permanent pour cette fonction spéciale - peut surcharger l'opérateur pour cette.

    D'une manière générale, il est vrai, mais la surcharge – Il est une façon élégante de vous tirer dans le pied (et même tirer sur tout ce camarade). Il est une chose dangereuse. Il peut soit augmenter la lisibilité du code, et tout le butin.

    A Myers étaient les règles à ce sujet (si elles ne sont pas conformes aux – L'enfer vous faire maintenir votre code tout 7 cercles). par exemple:
    – opérateur d'affectation doit renvoyer une référence à cette *;
    – dans l'opérateur d'affectation pour vérifier samoprisvaivaniya;
    – il tselyyel à propos de la surcharge de la nouvelle et de suppression, mais IMHO 99% mortels tout simplement pas besoin de toucher ces opérateurs;
    – fonction déclarer, non-membres, Lorsque la conversion de type doit être appliqué à tous les paramètres.
    Eh bien, un certain nombre d'autres règles (quelques livres).
    Je suggère de prêter attention à la dernière règle de la liste. Vous avez décrit l'opérateur, qui travaillent pour

    Blague + str1;
    Mais il ne va pas travailler pour
    str1 + Blague;

    Mais ce serait bien si l'opérateur pourrait fonctionner dans les deux sens. Il suffit de faire ce pas un membre de la classe (fonction normale). Il est pas difficile? )

Laisser un commentaire

Placez le code dans les balises: <pre class="lang:c ++ décodage:true ">VOTRE CODE</pré>