Bonjour,
comment définir les opérateur [] et <<, >> (les cheverons) en C++? De manière générale.
Merci par avance.
Bonjour,
comment définir les opérateur [] et <<, >> (les cheverons) en C++? De manière générale.
Merci par avance.
Bonjour.
Tu trouveras la liste des opérateurs et leurs déclarations dans cette page.
Bonjour
De manière générale ont redéfini les opérateurs en fonction de ses objectifs ou besoins. Si c'est pour redéfinir un opérateur de décalage à gauche pour effectuer un décalage à gauche cela n'a aucun intérêt, mais en revanche si c'est pour rediriger un flux alors cela peut être une raison pour redéfinir l'opérateur. D'un autre cotez, vous êtes sur un très bon site alors pourquoi ne pas faire quelque petite recherche et eurêka lire ceci ?
à bientôt
Bonjour,
alors voilà, j'ai une classe de vecteur que l'on nommera A, et je souhaite définir des surcharges d'opérateurs pour: +, *, et l'opérateur d'affectation =.
Voici ce que j'ai trouvé.
pour l'opérateur * (qui est la multiplication d'un scalaire par un vecteur, à gauche.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 //Déclaration et définition de l'opérateur + A operator + (const A & v) const { A b(n); assert(n==v.n); for(int i=0;i<n;i++) b[i]=v[i]+w[i]; return b; }
pour l'opérateur d'affectation =
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 //Déclaration est définition de l'opérateur * A operator * (double &v) const { vecteur b(n); for(int i=0;i<n;i++) b[i]=w[i]*v; return b; }
Ma question est: pour retenir toutes ces définition, il faut que je puisse comprendre leurs logiques, et ça je n'y arrive pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 //Déclaration et définition de l'opérateur d'affectation A& operator = (const A &v) { assert(n==v.n); for(int i=0;i<n;i++) w[i]=w[i]+v.w[i]; return *this; }
1- pour l'opérateur +: on apprend au compilateur comment aditionner deux vecteurs, composante par composante: comment est-ce qu'il va savoir qui est w[i]? et comment est ce qu'on dispose les const et les &?
2- pour l'opérateur *; on veut dire par double que c'est un scalaire. Par contre, je ne cherche pas à faire un produit scalaire, mais multiplier un scalaire par un vecteur. Comment il va faire ça?
3- pour l'opérateur d'affectation, en fait qu'est ce qu'on doit lui exepliquer? comment disposer les & et const? et que signifi *this? (j'ai lu que ca veut dire qu'il demande à retournerl'objet), mais pourquoi *? et pourquoi pas return w?
Je vous remercie par avance.
@hinaneee tu spam un nombre "considérable" de sujet sur ce forum et sur d'autres forums d'entre-aides.
Et à chaque fois, c'est la même chose, on te dit de reprendre les bases.
Tu ne t'en sortiras pas sans une très sérieuse révision des bases du C++.
On te l'a dit plusieurs fois, et c'est vraiment sérieux, révises.
A ta décharge, la référence que tu utilises est bien pourrie et te fait prendre de bien mauvais réflexes, comme ces putains d'assert qui n'ont rien à faire dans une classe qui devrait être template, de base.
je suis entrain d'essayer de comprendre pourquoi on les définit de la sorte pour pouvoir les mémoriser car j'oublie à chaque fois. Je cherche une explication logique, je ne demande pas à ce qu'on écrive mon programme, je veux juste qu'on m'explique. Voilà, si quelqu'un peut m'expliquer comment on définit de manière simple et logique ces opérateurs pour des vecteurs, et me montrer des écritures plus modernes, je le remercie par avance.
- le spam est très mal vu
- tes questions sont en deçà des bases, on apprend à marcher avant de vouloir courir
- on t'a déjà répondu un nombre incalculable de fois sur un de tes trop nombreux sujets
- sais-tu ce qu'est un operator ? ou bien c'est juste un mot-clé que tu balances ?
- sais-tu ce qu'est un vecteur comme tu l'entends ? ou bien tu ne sais pas non plus l'objet mathématique ?
- où est la difficulté à multiplier par X tous les éléments d'un tableau ?
- ou bien tu ne sais même pas créer ledit tableau ?
- ou alors c'est son parcours le problème ?
- class A : public std::valarray {};;
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager