CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

(C++) Surcharge opérateur - unaire

LGV
LGV
Niveau 28
18 mars 2006 à 20:52:20

tu fais bien de le rappeler !

voici donc un petit exemple http://www.rafb.net/paste/results/0BSIdV76.html

ca melange operateurs internes et externes, pour assurer un max de souplesse (float*vector3 ET vector3*float), et de robustesse (tous base sur le meme operateur au final.. si on veut changer le comportement de *, il suffit de changer le code en un seul endroit)

voila voila, si un truc est pas clair, trace le code pour verifier qui est appele ou !

gulius44
gulius44
Niveau 9
19 mars 2006 à 00:40:26

C´est beaucoup plus clair du coup!
Mais en fait, n´étant pas trop habitué à manipuler les classes (commençant tout juste), je ne savais pas trop comment implémenter les fonctions opérateurs entre objets et types primitifs, entre autre ....
Mais avec ton exemple, ça me semble bcp plus concrèt et logique.

Euh, sinon (dis-moi si je me trompe), je pense que les opérations entre objets et types primitifs semblent utiles seulement pour le calcul matriciel, vectoriel, etc....

Alors que les opérations inter-objets ont un bcp plus large champ d´action ....
Une multiplication, addition, soustraction ... entre objets quelquonques, ne peut avoir en soi, pas vraiment de sens, mais cela permet d´importants raccourcis.

Euh sinon, juste une chose, je ne comprend pas vraiment pourquoi rajouter un const (son utilité, modalité d´utilisation, ...) ... à la suite de la déclaration des paramètres d´une fonction membre .... comme ici par exemple :
Vector3 operator +(Vector3 const &_other) const;

Merci bien en tout cas

dnob700
dnob700
Niveau 10
19 mars 2006 à 00:49:52

Ce que tu manipule n´est pas forcément des objets mathématiques. Et tu peut facilement inventer un sens pour l´addition ou la multiplication pour des objets complétement autres, mais là il faut avoir des exemple concret pour voir.

Pour le const, ça indique au compilateur et au programmeur qui utilise la classe que l´objet en question (celui qui est marqué par const) n´est pas modifié lorsqu´on le passe en paramètre à la fonction (ça n´est donc utile que pour des pointeurs ou des références). Le but étant d´écrire un code plus propre, et ça permet parfois e diminuer le risque d´erreur. Globalement c´est uen bonne habitude à prendre de déclarer const des référence sur des objet qui ne sont pas modifié (ou qui ne sont pas cencé être modifié).

LGV
LGV
Niveau 28
19 mars 2006 à 04:00:30

il parlait de l´autre const je pense, celui apres les parametres :-?

si c´est le cas, c´est juste pour indiquer que l´objet ne sera pas modifie lorsqu´on appelle une methode const dessus.
Exception : on peut declarer des membres "mutable" dans une classes, ces membres seront modifiables meme depuis des methodes consts.

pour les operateurs non mathematiques, il y plein d´utilisations possibles, mais le but est de simplifier l´ecriture, pas de complexifier la lecture du code : l´operation effectuee par un operateur doit toujours rester intuitive.

gulius44
gulius44
Niveau 9
19 mars 2006 à 11:40:08

C´est effectivement de ce const là que je parlais.
Pour le reste, je suis tout à fait d´accord ....

Sous forums
  • Aide à l'achat Mac
  • Création de sites web
  • Internet
  • Macintosh
  • Création de Jeux
  • Linux
  • Programmation
  • Steam Deck
  • Hardware
La vidéo du moment