Aller au menu - Aller au contenu

[Plan du site] Vous êtes ici --- > Le Site du Zéro > Les forums > Programmation > Langage C++ > Les mots clefs > Lecture du sujet

Les mots clefs

Rédaction ici

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
Hors ligne magnanime # Posté le 20/11/2007 à 15:36:35
Avatar
Groupe : Membres
Reprise du dernier message de la page précédente :
Bonjour,
je crois qu'il y a une erreur sur la liste des mots clés.
En effet, time_t n'est pas un mot clé mais un type défini dans <ctime> :
lien vers cpluslpus.com. Par contre wchar_t en est un.
Connecté Hiura # Posté le 20/11/2007 à 16:59:01
Avatar
Groupe : Membres
Hors ligne Nanoc # Posté le 24/11/2007 à 13:41:29
Apprenez à utiliser la STL !!
Avatar
Groupe : Membres
Juste pour corriger ce qui est déjà écrit:

Il te manque les mots-clés suivants:

catch
const_cast
dynamic_cast
explicit
extern
if

et les termes suivants ne sont pas des mot-clés:

restrict
size_t
do_while (enfin chacun séparément oui)

A+
 
Connecté Hiura # Posté le 24/11/2007 à 13:55:00
Avatar
Groupe : Membres
Merci. Pour do_while, je sais pas trop comment procéder car l'article do_while existe. Je sais pas si je dois faire deux mots clefs avec le même lien...

Sinon, je mets au rythme (à peu près) de un mots-clef par jour.
 
Hors ligne Nanoc # Posté le 24/11/2007 à 13:57:59
Apprenez à utiliser la STL !!
Avatar
Groupe : Membres
Pour le do_while, à toi de voir. Disons que do est toujours suivi de while.
 
Connecté Hiura # Posté le 24/11/2007 à 14:00:38
Avatar
Groupe : Membres
Donc c'est pas vraiment un mensonge de les mettre ensemble?
Je vais lasser comme ça (en tout cas pour le moment), c'est plus simple (et ça embrouillera moins les 0).
 
Hors ligne Nanoc # Posté le 25/11/2007 à 16:38:41
Apprenez à utiliser la STL !!
Avatar
Groupe : Membres
J'ai corrigé la dernière liste de mots-clés. Et comme tu as repris to rythme de croisière, je propose quelques définitions:

-------------------------------------------------------------------------------------------------------

signed
Description : Variable. Permet de spécifier si une variable peut-être négative ou positive.
Langage : C et C++
Exemple et/ou commentaire : Code : C++ - Afficher / masquer les numéros de ligne
  1. signed int a; //Déclaration d'un entier pouvant être positif ou négatif

Si l'on ne spécifie rien, les types de bases sauf implicitement déclarés signés

-------------------------------------------------------------------------------------------------------
(L'autre unsigned que j'avais proposé était buggué...)

unsigned
Description : Variable. Permet de spécifier qu'une variable est positive.
Langage : C et C++
Exemple et/ou commentaire : Code : C++ - Afficher / masquer les numéros de ligne
  1. unsigned int a; //Déclaration d'un entier pouvant être seulement positif

Une variable déclarée non-signée peut recevoir un nombre 2 fois plus grand que le même type déclaré signé.

-------------------------------------------------------------------------------------------------------

volatile
Description : Variable. Peret de spécifer qu'une variable pourra être modifiée par le programme mais aussi par des facteurs extérieurs, comme par exemple par le système d'exploitation.
Langage : C et C++
Exemple et/ou commentaire : Code : C++ - Afficher / masquer les numéros de ligne
  1. volatile int a; //Déclaration d'un entier pouvant être modifié par un facteur externe au programme

Une variable ne peut pas être à la fois register et volatile

-------------------------------------------------------------------------------------------------------

try
Description : Introduit un bloc susceptible de lever des exceptions. Un bloc try peut contenir n'importe quel type d'instruction.
Langage : C et C++
Exemple et/ou commentaire : Code : C++ - Afficher / masquer les numéros de ligne
  1. try{
  2. //Instructions susceptibles de lever une exception
  3. }catch(/*...*/)
  4. {
  5. //Gestion de l'exception
  6. }


-------------------------------------------------------------------------------------------------------

throw
Description : Lance une exception. throw doit être placé dans un bloc try pour lancer une exception. Il est aussi possible de relancer une excpetion reçue par un catch en utilisant throw sans argument. Il est également possible de spécifier dans le prototype d'une fonction qu'elle est susceptible de lever une exception.
Langage : C et C++
Exemple et/ou commentaire : Code : C++ - Afficher / masquer les numéros de ligne
  1. //On crée une portion de code qui peut potentiellement lever une exception
  2. try{
  3.    //Une erreur s'est produite, on lance une exception
  4.    throw std::exception(); //Lancement d'une exception
  5. }
  6. catch(std::exception& e){
  7.    //Gestion de l'exception
  8.    std::cerr << e.what() << std::endl;
  9.    throw;  //On relance la même exception pour la retraiter plus loin.
  10. }

Code : C++ - Afficher / masquer les numéros de ligne
  1. void maFonction(double a) throw(std::exception);
  2. //Prototype d'une fonction susceptible de lever une exception


-------------------------------------------------------------------------------------------------------

Je suis comme toujours ouvert à toute remarque,suggestion,commentaire quelqu'il soit.
Édité le 28/11/2007 à 18:46:23 par Nanoc
 
Connecté Hiura # Posté le 25/11/2007 à 17:37:35
Avatar
Groupe : Membres
Merci beaucoup!
Mais : Code : C++ - Afficher / masquer les numéros de ligne
  1. unsigned int a; //Déclaration d'un entier pouvant être positif ou négatif

ne devrait pas être qqch comme ça :
Code : C++ - Afficher / masquer les numéros de ligne
  1. unsigned int a; //Déclaration d'un entier pouvant être seulement poisitif
?
 
Hors ligne Nanoc # Posté le 25/11/2007 à 18:41:16
Apprenez à utiliser la STL !!
Avatar
Groupe : Membres
C'est corrigé. Une bête erreur de copier-coller
 
Hors ligne MatteX # Posté le 26/11/2007 à 17:55:55
The cake is a lie!
Avatar
Groupe : Membres
la description de throw est un peu trop lourde et elle est fausse en plus! throw ne doit pas obligatoirement être utilisé dans un bloc try.

Mais les exceptions lancées doivent être attrapée dans la pile entre la fonction qui lance et le main.

l'exemple est, par ailleurs, incompréhensible.

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!
 
Hors ligne Nanoc # Posté le 27/11/2007 à 19:33:21
Apprenez à utiliser la STL !!
Avatar
Groupe : Membres
Est-ce que tu aurais un exemple de code ou throw ne se trouve pas dans un bloc try ?

C'est vrai que l'exemple est pas super, je vais améliorer ça dès que j'aurais ta réponse.
 
Hors ligne MatteX # Posté le 27/11/2007 à 20:01:01
The cake is a lie!
Avatar
Groupe : Membres
Code : C++ - Afficher / masquer les numéros de ligne
  1. void bidon()
  2. {
  3.     throw std::exception( "Waaaah! la fonction bidon() n'est pas implémentée" );
  4. }

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!
 
Hors ligne Nanoc # Posté le 27/11/2007 à 21:08:28
Apprenez à utiliser la STL !!
Avatar
Groupe : Membres
Ok, mais comment tu la rattrapes cet exception ?
 
Hors ligne MatteX # Posté le 27/11/2007 à 21:34:40
The cake is a lie!
Avatar
Groupe : Membres
Dans une fonction appelante quelque part dans la pile, l'exception "déroulera" la pile d'appels jusquà ce qu'elle soit attrapée mais l'utilisation de throw ne se fait pas obligatoirement dans un bloc try!
Édité le 27/11/2007 à 21:35:05 par MatteX

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!
 
Hors ligne Nanoc # Posté le 27/11/2007 à 21:39:49
Apprenez à utiliser la STL !!
Avatar
Groupe : Membres
D'accord. Mais dans ce cas, à quoi sert le try ? :)
Édité le 27/11/2007 à 21:40:30 par Nanoc
 
Hors ligne MatteX # Posté le 28/11/2007 à 04:11:10
The cake is a lie!
Avatar
Groupe : Membres
À signaler qu'un bloc peut soulever une exception qu'on attrapera... mais l'exception peut être levé dans le dédale des fonctions appelées tant qu'elle n'est pas attrapée avant ce bloc...

Si l'exception est levée à 8 fonctions de "profondeurs" avant de rejoindre un bloc try elle redescendra toute la pile jusqu'à ce qu'elle soit attrapée! Donc le throw n'a pas été fait dans un bloc try (enfin, d'un point de vue puriste oui! car on peut voir l'appel d'une fonction comme un bloc imbriqué dans un autre)

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!
 
Hors ligne Nanoc # Posté le 28/11/2007 à 14:34:32
Apprenez à utiliser la STL !!
Avatar
Groupe : Membres
Ahaa !! Dans ce cas, je fais partie des puristes !

Le throw est donc forcément dans un bloc try, qui peut être situé bien au-dessous dans la pile des fonctions.

 
Hors ligne magnanime # Posté le 28/11/2007 à 15:03:10
Avatar
Groupe : Membres
Je propose cet exemple assez simple:
Code : C++ - Afficher / masquer les numéros de ligne
  1. try
  2. {
  3.    throw 5;
  4. }
  5.  
  6. catch(int a)
  7. {
  8.    cout << a;
  9. }

Hors ligne lmghs # Posté le 28/11/2007 à 15:53:01
Groupe : Membres
Mieux vaut utiliser les exceptions standard.
 
Hors ligne Nanoc # Posté le 28/11/2007 à 18:17:26
Apprenez à utiliser la STL !!
Avatar
Groupe : Membres
J'ai corrigé mon exemple qui me semble maintenant compréhensible.

@ hiura: Essaye de mettre tous les mots-clés en majuscule dans ton post, ou alors aucun. Juste que ce soit plus uniforme.
Édité le 28/11/2007 à 18:20:38 par Nanoc
 
Hors ligne MatteX # Posté le 28/11/2007 à 18:37:48
The cake is a lie!
Avatar
Groupe : Membres
Citation : Nanoc
Code : C++ - Afficher / masquer les numéros de ligne
  1. //On crée une portion de code qui peut potentiellement lever une exception
  2. try{
  3. //Une erreur s'est produite, on lance une exeption
  4. throw std::exception; //Lancement d'une exception
  5. }
  6. catch(std::exception){
  7. //Gestion de l'exception
  8. std::cerr << e.what() << std::endl;
  9. throw;  //On relance la même exception pour la retraiter plus loin.
  10. }


ton code ne marchera pas (et l'indentation est terrible) :
Code : C++ - Afficher / masquer les numéros de ligne
  1. //On crée une portion de code qui peut potentiellement lever une exception
  2. try
  3. {
  4.     //Une erreur s'est produite, on lance une exeption
  5.     throw std::exception(); //Lancement d'une exception
  6. }
  7. catch( const std::exception & e )
  8. {
  9.     //Gestion de l'exception
  10.     std::cerr << e.what() << std::endl;
  11.     throw;  //On relance la même exception pour la retraiter plus loin.
  12. }

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!
 
Hors ligne Nanoc # Posté le 28/11/2007 à 18:47:01
Apprenez à utiliser la STL !!
Avatar
Groupe : Membres
En effet j'ai parlé trop vite.
 
Connecté Hiura # Posté le 28/11/2007 à 20:31:17
Avatar
Groupe : Membres
je doit avoir besoin de lunettes car je ne vois pas de majuscule dans la liste...

Merci encore pour l'interet que vous portez au topic.

PS : j'ai pris note pour 'enum' (sur un autre topic).
 
Hors ligne Nanoc # Posté le 29/11/2007 à 20:34:00
Apprenez à utiliser la STL !!
Avatar
Groupe : Membres
J'ai encore une fois parlé trop vite. Je pensais gras et pas majuscule. Dans les "titres" en fait.
 
Connecté Hiura # Posté le 30/11/2007 à 09:03:42
Avatar
Groupe : Membres
Hors ligne Nanoc # Posté le 01/12/2007 à 22:43:06
Apprenez à utiliser la STL !!
Avatar
Groupe : Membres
J'ai juste une correction à apporter. Dans l'exemple sur le mot-clé "class", il y a un commentaire qui parle de "méthode", "fonction membre" serait mieux puisqu'on devrait réserver méthode aux fonctions membres virtuelles.

Sinon je propose un exemple pour "mutable":
Code : C++ - Afficher / masquer les numéros de ligne
  1. class A{
  2. public:
  3.    int a;
  4.    mutable int b;
  5. };
  6.  
  7. int main()
  8. {
  9.    const A monObjet;
  10.    monObjet.a = 2; //Interdit car monObjet est constant, on ne peut modifier ses attributs normaux
  11.    monObjet.b = 2; //Autorisé car l'attribut b est modifiable.
  12. }


 
Connecté Hiura # Posté le 02/12/2007 à 02:19:55
Avatar
Groupe : Membres
Hors ligne lmghs # Posté le 03/12/2007 à 18:24:46
Groupe : Membres
Salut,
Concernant "operator".

Ce n'est pas un mot clé destiné à surcharger, mais à _désigner_. Les opérateurs ne sont que des fonctions un peu particulières dont le nom contient le terme "operator". "operator" n'est pas nécessaire, bien qu'utilisable, lors des appels. En revanche, il est bien nécessaire lors des surcharges.

NB: il y a un cas particulier avec les opérateurs de convertion implicite.
NB2: l'opérateur donné en exemple n'est pas valide car prenant trois arguments => le sortir pour en faire un opérateur libre (qui est l'approche préférée dans le cas des opérateurs binaires tels que celui-ci).
 
Connecté Hiura # Posté le 03/12/2007 à 18:55:36
Avatar
Groupe : Membres
Je vais rajouter en commentaire le second paragraphe.
Mais j'ai pas compris le NB2... Tu peux m'expliquer stp? Merci.
 
Hors ligne lmghs # Posté le 03/12/2007 à 19:31:56
Groupe : Membres
Pour le NB2: 3 corrections possibles:
- rajouter un friend (mauvaise pratique dans un tel cas)
- virer le premier argument (pas la meilleure des pratiques)
- sortir l'opérateur de la classe (ce qui est préféré)

Là, l'opérateur est défini comme une fonction membre. Or toutes les fonctions membre prennent un argument implicite qui est l'objet sur lequel elles s'appliquent. Ce qui monte à trois le nombre d'arguments de l'opérateur de l'exemple. Pour un opérateur binaire (-> 2), comment dire ... c'est problématique.
 
Connecté Hiura # Posté le 03/12/2007 à 19:45:52
Avatar
Groupe : Membres
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
 

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.

Nombre de connectés 434 Zéros connectés | Requêtes SQL 8 requêtes | Temps de génération de la page : Total (SQL) 0.2658s (0.2445s)