TutorielsVous débutez ? C'est ici qu'on commence !
Mon compte
Recherche
Livre d'or
PublicitéVous devez être inscrit pour pouvoir poster des messages
| Page : Précédente 1 2 3 4 5 6 7 Suivante | |
| Auteur | Message |
|---|---|
| 1 visiteur sur ce sujet (1 anonyme) | |
| Page : Précédente 1 2 3 4 5 6 7 Suivante | |
Hiura
|
# Posté le 03/12/2007 à 19:45:52 |
![]() Groupe : Membres |
Reprise du dernier message de la page précédente :
Ok, je vois mieux. Je vais modifier l'exemple en utilisant un opérateur unaire* (j'ai pas mal de soucis avec les deux sortes d'opérateur (binaire et unaire), faut que je relise le passage dans la bible...).* c'est ce que je maîtrise le mieux alors en attendant d'avoir relu le passage je mets ça, je mettrai l'opérateur binaire (hors de la classe) après. EDIT : je vais directement faire mieux, je vais mettre un exemple de la bible, EDIT : ledemonboiteux a posté dans le "mauvais" topic. Mais c'est pas pour ça que je le dis. J'ai un doute sur l'exemple fournit : ça me semble foireux (je sais même pas si la définition est correcte...). Qu'en pensez vous? Lien vers le post : http://www.siteduzero.com/forum-83-175473-1950899-les-mots-clefs.html#r1950899
Édité
le 04/12/2007 à 16:33:03
par Hiura
|
ledemonboiteux
|
# Posté le 04/12/2007 à 16:43:31 |
|
Groupe : Membres |
explicit
Description : Un constructeur à un seul paramètre (ou avec n paramètres dont n-1 ayant des valeurs par défaut) peut être utilisé implicitement par le compilateur pour réaliser une conversion de type (ligne 5) . Pour interdire ce comportement on utilise le mot clef explicit dans la déclaration du constructeur, qui remplace la précédente (ligne 6) Langage : C++ Exemple : Code : C++ - Afficher / masquer les numéros de ligne
Édité
le 05/12/2007 à 11:26:05
par ledemonboiteux
|
Hiura
|
# Posté le 04/12/2007 à 16:45:11 |
![]() Groupe : Membres |
Petite faute d'ortho : deuxième commentaire : interdire.
|
lmghs
|
# Posté le 04/12/2007 à 16:49:19 |
|
Groupe : Membres |
Très Bien -- bien que l'on puisse encore rajouter les "const&".
|
Hiura
|
# Posté le 04/12/2007 à 16:56:45 |
![]() Groupe : Membres |
J'ai une question : on doit mettre soit l'une soit l'autre? (je parle des lignes 5 et 6.)
Disons que j'ai du mal à comprendre le concept... Sinon, pour les opérateur unaire et binaire, il y a une règle pour leur création (du style dans une classe on crée des opérateurs unaires, à l'extérieur on crée des binaires)? J'ai un peu du mal à comprendre Stroustrup dans ses explications... |
lmghs
|
# Posté le 04/12/2007 à 17:27:58 |
|
Groupe : Membres |
Une seule.
Le choix sera selon le besoin avéré ou non de disposer de convertions implicites. |
ledemonboiteux
|
# Posté le 05/12/2007 à 11:26:37 |
|
Groupe : Membres |
J'ai éditer pour que ce soit plus clair, il faut bien sur choisir une des deux lignes.
|
Hiura
|
# Posté le 05/12/2007 à 19:48:08 |
![]() Groupe : Membres |
Merci lmghs!
Mais j'ai pas compris, pour les unaire et binaire, quand est-ce le mieux pour l'un? pour l'autre "sorte" d'opérateur? ledemonboiteux : j'ai remis ton mot. |
MatteX
|
# Posté le 05/12/2007 à 20:23:12 |
The cake is a lie!![]() Groupe : Membres |
Unaire c'est qu'il n'a qu'une seule opérande, binaire il en a 2
comme l'opérateur "*" Unaire : Code : C++ - Afficher / masquer les numéros de ligne
Binaire : Code : C++ - Afficher / masquer les numéros de ligne
liens utiles: FAQ C++ (developpez.com) | GotAPI.com | H-Deb Mon futur ex-blog | Logique : http://thedailywtf.com/Articles/What_Is_Truth_0x3f_.aspx Propriétaire d'un Dell Inspiron 1720, Core 2 Duo 2.4Ghz, 3Go DDR2, 8600M GT 256Mo. Avec Blu-Ray! |
Hiura
|
# Posté le 05/12/2007 à 20:44:00 |
![]() Groupe : Membres |
je crois que je mieux compris merci!
|
lmghs
|
# Posté le 05/12/2007 à 21:08:41 |
|
Groupe : Membres |
Et ternaire .. 3 -> ?: (ce n'est pas un smiley)
|
Hiura
|
# Posté le 05/12/2007 à 21:58:02 |
![]() Groupe : Membres |
J'ai pas trouvé , il sert à quoi l'opérateur ?: ? (en générale)
|
lmghs
|
# Posté le 06/12/2007 à 11:43:11 |
|
Groupe : Membres |
C'est un équivalent au if. Mais au lieu de mettre l'accent sur la condition pour faire des traitements différents, il met l'accent sur le fait que l'on veut obtenir le résultat une expression, ou éventuellement d'une autre selon la condition.
Trucs équivalents: Code : C++ - Afficher / masquer les numéros de ligne
NB: souvent, il y a des gens qui critiquent cet opérateur pour son manque de lisibilité. Avec quelques sauts de lignes bien placés, ce n'est vraiment pas un problème. Trucs pratiquement propres à chaque approche: Code : C++ - Afficher / masquer les numéros de ligne
Bref, quand les expressions deviennent trop complexes, mieux vaut passer par des variables intermédiaires histoire d'apporter un peu de clarté. Et quand des traitements doivent être réalisés : pas de question à se poser -> if. |
Hiura
|
# Posté le 06/12/2007 à 14:59:23 |
![]() Groupe : Membres |
A d'accord!
Et comme on ne peut pas le surcharger, faire ça est faux : Code : C++ - Afficher / masquer les numéros de ligne
Enfin, de toute façon ça n'a aucun sens. C'est bien ça qu'on appel "expression ternaire"? (ça m'a troublé car c'est "deux opérateurs" (enfin, il font toujours ensemble, mais noté comme ça :? ça ma troublé..) Merci pour ces précisions! |
MatteX
|
# Posté le 06/12/2007 à 15:34:09 |
The cake is a lie!![]() Groupe : Membres |
le classique étant :
Code : C++ - Afficher / masquer les numéros de ligne
la seule contrainte est que l'opérateur > soit surchargé, ce qui ne posera aucun problème avec les auto concept! liens utiles: FAQ C++ (developpez.com) | GotAPI.com | H-Deb Mon futur ex-blog | Logique : http://thedailywtf.com/Articles/What_Is_Truth_0x3f_.aspx Propriétaire d'un Dell Inspiron 1720, Core 2 Duo 2.4Ghz, 3Go DDR2, 8600M GT 256Mo. Avec Blu-Ray! |
lmghs
|
# Posté le 06/12/2007 à 16:04:29 |
|
Groupe : Membres |
Il te manque deux opérandes dans ton exemple, huira.
Donc oui, c'est faux. Mais rien n'empêche de définir un opérateur de convertion sur tes classes qui feront qu'un objet soit testable dans le cadre d'une expression à la booléenne (si je puis dire). Et après, les deux autres opérandes-expressions pouvant être n'importe quoi, mais du même type, tu peux vraiment écrire n'importe quoi. Par contre tu ne pourras jamais changer la sémantique de l'opérateur ternaire qui évalue et renvoie (/vaut) l'opérande-expression 2 ou 3 selon le résultat de l'évaluation de l'opérande 1. ( dans "1 ? 2 : 3" ) |
Hiura
|
# Posté le 06/12/2007 à 16:44:12 |
![]() Groupe : Membres |
Citation : lmghs
Mais rien n'empêche de définir un opérateur de convertion sur tes classes qui feront qu'un objet soit testable dans le cadre d'une expression à la booléenne (si je puis dire). tu penses à quoi en particulier? A ça : Code : C++ - Afficher / masquer les numéros de ligne
Pour faire qqch comme ça : Code : C++ - Afficher / masquer les numéros de ligne
(où actA et B sont "n'importe quoi")
Édité
le 06/12/2007 à 16:54:38
par Hiura
|
lmghs
|
# Posté le 06/12/2007 à 16:48:29 |
|
Groupe : Membres |
Ce n'est pas la syntaxe (IIRC), mais c'est l'idée.
On en avait parlé (ici), il y a 2-3 semaines (chercher "safe-bool" je crois) |
Hiura
|
# Posté le 06/12/2007 à 16:53:49 |
![]() Groupe : Membres |
Oui, je m'en souviens, je viens de relire le la page que tu avais donnée ( http://www.artima.com/cppsource/safebool.html ). Je corrige mon exemple.
Merci pour la réponse. |
magnanime
|
# Posté le 07/12/2007 à 16:57:47 |
![]() Groupe : Membres |
static_cast
Description : Permet la conversion entre deux types différents. Langage : C++ Exemple et/ou commentaire : Code : C++ - Afficher / masquer les numéros de ligne
Ce mot-clé équivaut aux casts C du type: Code : C++ - Afficher / masquer les numéros de ligne
mais l'usage de static_cast est conseillé. |
Hiura
|
# Posté le 07/12/2007 à 16:59:26 |
![]() Groupe : Membres |
pourquoi déconseillé?
|
lmghs
|
# Posté le 07/12/2007 à 17:24:28 |
|
Groupe : Membres |
- on ne sait pas de quel cast il s'agit -- façon de parler
- on ne peut pas faire de recherche dessus (grep powa') - on ne peut pas down-caster (correctement) avec les cast à la C (point de salut hors dynamic_cast) - il peut y avoir des effets de bors à la noix quand on bosse avec des déclarations anticipées : un /whatever/-casting de pointeur pouvant se voir transformé en reinterpret_cast, et là, c'est le drame. |
Hiura
|
# Posté le 07/12/2007 à 17:29:27 |
![]() Groupe : Membres |
ok, merci!
|
Hiura
|
# Posté le 12/12/2007 à 19:52:16 |
![]() Groupe : Membres |
Je propose cette définition (merci de me corriger/approuver).
union Description : Assez similaire dans l'utilisation et à la création de structure (C), mais la différence réside dans le fait qu'avec une union on ne peut utiliser qu'un seul attribut à la fois, ceci à pour effet de consommer moins de mémoire (la taille de mémoire utilisée est égale à la taille du type qui en prend le plus, pas à l'addition de la place prise par chaque attribut). A noter aussi qu'on ne peut pas mettre de classe dans un union car la construction d'objet y est impossible. Pour plus d'info, il existe ce tuto écrit par slimshady451. Langage : C & C++ Exemple et/ou commentaire : Code : C++ - Afficher / masquer les numéros de ligne
Code : Console - Sorite - Afficher / masquer les numéros de ligne u.reel vaut 12.5
u.entier vaut 0
Édité
le 13/12/2007 à 20:08:09
par Hiura
|
Nanoc
|
# Posté le 13/12/2007 à 19:56:27 |
Apprenez à utiliser la STL !!![]() Groupe : Membres |
Ta définition de l'union me semble correcte et complète. (similaire ne prend pas de y)
------------------------------------------------------------------------------------------------------- const_cast Description : Transtypage. Permet de caster un objet déclaré const ou volatile en un objet de même type mais pas constant. Langage : C++ Exemple et/ou commentaire : Code : C++ - Afficher / masquer les numéros de ligne
Remarque: Ce mot-clé n'est normalement jamais nécessaire. Son utilisation est souvent le signe d'une mauvaise conception. ------------------------------------------------------------------------------------------------------- static_cast Description : Transtypage. Permet de caster un objet dans un autre objet si les types sont compatibles. Langage : C++ Exemple et/ou commentaire : Code : C++ - Afficher / masquer les numéros de ligne
Remarque: Les conversions sont faites lors de la compilation. Il n'y a donc pas de test durant l'exécution qui pourrait lever une exception. ------------------------------------------------------------------------------------------------------- reinterpret_cast Description : Transtypage. Permet de réinterpréter autrement less données. On peut ainsi redescendre jusqu'à la représentation binaire des données. Langage : C++ Exemple et/ou commentaire : Code : C++ - Afficher / masquer les numéros de ligne
------------------------------------------------------------------------------------------------------- Pour le dynamic_cast, faut que je réfléchisse à un truc simple... ------------------------------------------------------------------------------------------------------- return Description : Instruction qui indique la fin d'une fonction. La suite du programme saute alors à l'endroit où la fonction a été appelée. return peut être suivit d'une expression selon que la fonction doit renvoyer une valeur ou non. Langage : C et C++ Exemple et/ou commentaire : Code : C++ - Afficher / masquer les numéros de ligne
Remarque: Il peut y avoir plusieurs return par fonction, mais la fonction se termine au premier return rencontré. ------------------------------------------------------------------------------------------------------- wchar_t Description : Type de variable, ressemblant aux char, pouvant contenir une valeur plus grande que ces derniers. Ceci permet par exemple de manipuler les caractères avec accents. Langage : C++ Exemple et/ou commentaire : Code : C++ - Afficher / masquer les numéros de ligne
Remarque: Ce type existe aussi en C, mais il ne fait pas partie du standard.
Édité
le 15/12/2007 à 10:30:56
par Nanoc
Exercices de C++ pour tous les niveaux ! Mes tutos: Tri de Shell --- [C++] Manipulateurs de flux --- [C++] Notions avancées (suite du cours de M@teo21) |
smilz
|
# Posté le 13/12/2007 à 20:03:37 |
La vie est une blague![]() Groupe : Membres |
Pour le return, précise que 1 seul return est exécuter par contre. Dès qu'un return est rencontré, le programme quitte la fonction.
I can't believe that. |
Hiura
|
# Posté le 13/12/2007 à 20:08:33 |
![]() Groupe : Membres |
Merci pour ces nouveaux mots!
|
lmghs
|
# Posté le 13/12/2007 à 21:58:23 |
|
Groupe : Membres |
const_cast sert à faire sauter les /cv-modifiers/. c comme const, v comme volatile.
reinterpret_cast porte très bien son nom : il sert à interpréter autrement des données. Limite en redescendant jusqu'à leur représentation binaire -- j'ai pas de meilleure formulation qui me viennent à l'esprit pour l'instant. Un meilleur exemple aurait été de passer de "int i=42;" à "reinterpret_cast<char*>(&i)", qui permet d'obtenir un pointeur sur un séquence d'octets que l'on peut balancer aux fonctions d'I/O binaires; séquence d'octets qui correspond à l'entier tel qu'il est stocké en mémoire. dynamic_cast -> lié eu polymorphisme d'inclusion. Essentiellement utile pour downcaster (souvent le signe d'une mauvaise manipulation sorti de quelques cas (comme à la sortie d'une désérialization, d'une factory; pour faire du multi-dispatch... ; soit des trucs rarement recherchés par des débutants en OO, d'où le "souvent signe ...." ), ou crosscaster. Il a des prérequis pour pouvoir être employé. Il y a des subtilités entre lui et static_cast que l'on retrouvent dans quantités de cours. |
MatteX
|
# Posté le 13/12/2007 à 22:27:16 |
The cake is a lie!![]() Groupe : Membres |
return : une fonction?
return est une simple instruction comme if, while, etc... liens utiles: FAQ C++ (developpez.com) | GotAPI.com | H-Deb Mon futur ex-blog | Logique : http://thedailywtf.com/Articles/What_Is_Truth_0x3f_.aspx Propriétaire d'un Dell Inspiron 1720, Core 2 Duo 2.4Ghz, 3Go DDR2, 8600M GT 256Mo. Avec Blu-Ray! |
magnanime
|
# Posté le 14/12/2007 à 14:10:15 |
![]() Groupe : Membres |
if et while sont des groupes d'instructions, return s'apparente plus à
break, continue et throw. Mais bon, c'est ce que MatteX voulais dire je suppose. |
MatteX
|
# Posté le 14/12/2007 à 14:53:36 |
The cake is a lie!![]() Groupe : Membres |
Effectivement, return est une instruction de saut (traduction à la main de "Jump Statement") comme ses trois confrères alors que if est une instruction conditionnelle et while une instruction itérative....
Il reste que ce ne sont pas des fonctions! J'aimerais ajouter qu'il existe aussi goto dans les "Jump Statement" (ok ok! pas d'attaque. On ne peux lui empêcher d'exister ce mot-clé, c'est le grand-père des boucles!) liens utiles: FAQ C++ (developpez.com) | GotAPI.com | H-Deb Mon futur ex-blog | Logique : http://thedailywtf.com/Articles/What_Is_Truth_0x3f_.aspx Propriétaire d'un Dell Inspiron 1720, Core 2 Duo 2.4Ghz, 3Go DDR2, 8600M GT 256Mo. Avec Blu-Ray! |
Retour au forum "Langage C++" ou à la liste des forums
Vous devez être inscrit pour pouvoir poster des messages
Changer de design |
En savoir plus |
Plan du site |
Politique d'accessibilité |
Règles |
RSS tutoriels |
RSS news
Édité par Simple IT SARL :
Nous contacter
| Notre blog | Revue de presse | Publicité
Y'a plus rien à lire, faut remonter maintenant !
Hébergement web - Correction de tutoriels - Créer un site
Vous souhaitez apparaître ici ? Contactez-nous.
296 Zéros connectés |
7 requêtes |
0.1409s (0.1222s)
