Accueil
Accueil Le Club Delphi Kylix C C++ Java J2EE DotNET & C# Visual Basic Access Pascal Dev Web PHP ASP XML UML SQLSGBD Windows Linux Autres
logo
Edito
Cette faq a été réalisée à partir des questions fréquemment posées sur les forums de http://www.developpez.com et de l'expérience personnelle des auteurs.
Je tiens à souligner que cette faq ne garantit en aucun cas que les informations qu'elle propose sont correctes ; les auteurs font le maximum, mais l'erreur est humaine. Cette faq ne prétend pas non plus être complète. Si vous trouvez une erreur ou si vous souhaitez devenir rédacteur, lisez ceci.
Sur ce, je vous souhaite une bonne lecture. LFE

Statistiques
Nombre d'auteurs : 19
Nombre de questions : 263
Dernière mise à jour : 14/10/2005

   sommaire    suivant   

Sommaire
        1. Information générale(6)
                Comment bien utiliser cette faq ?
                La question que je me pose ne se trouve pas dans cette FAQ, que faire ?
                Comment participer à cette faq ?
                Quels sont les droits de reproduction de cette faq ?
                Remerciements
                Que signifie exactement "mauvais" dans cette FAQ ?
        2. Généralités sur le C++(16)
                Que faut-il savoir avant de commencer en C++ ?
                Qui utilise le C++ ?
                Le C++ est-il normalisé ?
                Combien de temps faut-il pour apprendre le C++ ?
                Dois-je apprendre le C avant le C++ ?
                2.1. Guide de démarrage(7)
                        Où trouver de la documentation de référence sur le C++ ?
                        Ou trouver un compilateur C++ ?
                        Où puis-je obtenir une copie du standard ?
                        Quel livre acheter ou lire ?
                        Où puis-je trouver des cours à télécharger et à consulter ?
                        Où trouver la solution des exercices du livre "Le langage C++" de Stroustrup ?
                        Au secours, à l'aide, j'ai une erreur! Que faire?
                2.2. Bibliothèques complémentaires(4)
                        Où trouver des bibliothèques de fonctions toutes faites ?
                        Comment créer une interface graphique en C++ ?
                        Comment manipuler des images ?
                        Comment gérer les dates et les heures en C++ ?
        3. Caractéristiques du langage(7)
                Quelles sont les caractéristiques du langage C++ ?
                Le C++ assure-t'il la compatibilité avec le C ?
                Quelques caractéristiques du langage C++ d'un point de vue 'business'
                C++ est-il un langage parfait ?
                Le C++ est-il un meilleur langage que .... ?
                Le C++ est-il un langage pratique ?
                Puis-je utiliser des bibliothèques écrites en C dans mes programmes C++ ?
        4. Programmation objet en C++(12)
                Quels sont les enjeux associés aux techniques Orientées Objets ?
                Qu'est-ce qu'un objet ?
                Qu'est-ce que l'héritage ?
                Qu'est-ce que la surcharge ?
                Qu'est-ce que l'encapsulation ?
                L'encapsulation constitue-t-elle un mécanisme de sécurité ?
                Comment le C++ permet-il d'améliorer le compromis entre fiabilité et simplicité d'utilisation ?
                Comment savoir si je dois dériver une classe ou l'encapsuler ?
                Qu'est-ce qu'une bonne interface ?
                Que sont les accesseurs / mutateurs ?
                Quand et comment faut-il utiliser des accesseurs / mutateurs ?
                La conception d'une classe doit-elle se faire plutôt par l'extérieur ou par l'intérieur ?
        5. Les classes en C++(49)
                Qu'est-ce qu'une classe ?
                Comment structurer ma classe en un fichier .h et un fichier .cpp ?
                Qu'est-ce "this" ?
                Comment puis-je empêcher les autres programmeurs de violer l'encapsulation en accédant aux membres privés de mes classes ?
                Comment dériver une classe à partir d'une autre ?
                Comment faire pour empêcher de créer plus d'une instance d'une classe ?
                Que signifient public, private et protected ?
                Quelle est la différence entre class et struct ?
                Comment créer 2 classes qui font référence l'une à l'autre ?
                Que signifie objet.fonction1().fonction2() ?
                Comment effectuer la copie d'objets polymorphiques ?
                Qu'est-ce qu'une classe abstraite ?
                5.1. Les constructeurs(12)
                        Qu'est-ce qu'un constructeur ?
                        Qu'est-ce qu'un constructeur par défaut?
                        Qu'est-ce qu'un constructeur de copie?
                        Y a-t-il une différence quelconque entre MaClasse x; et MaClasse x(); ?
                        Un constructeur d'une classe peut-il appeler un autre constructeur de la même classe pour initialiser 'this' ?
                        Est-ce que le constructeur par défaut pour Fred est toujours Fred::Fred() ?
                        Quel constructeur est appelé quand je crée un tableau d'objets Fred ?
                        Mes constructeurs doivent-ils utiliser les listes d'initialisation ou l'affectation ?
                        Puis-je utiliser le pointeur this dans un constructeur ?
                        Qu'est-ce que l'idiome du constructeur nommé (Named Constructor)?
                        Que faire en cas d'échec du constructeur ?
                        Qu'est ce que "l'idiome des paramètres nommés" ?
                5.2. Les destructeurs(11)
                        Qu'est-ce qu'un destructeur ?
                        Est-il possible d'invoquer explicitement le destructeur d'une classe ?
                        Dans quel ordre les objets locaux sont-ils détruits?
                        Dans quel ordre les objets contenus dans un tableau sont-ils détruits?
                        Doit-on détruire explicitement les objets locaux ?
                        Et si on veut absolument qu'un objet local "meure" avant l'accolade fermant le bloc dans lequel il a été créé ?
                        Et s'il n'est pas possible de placer l'objet local dans un bloc artificiel ?
                        Peut-on détruire explicitement un objet alloué par new ?
                        Dans le code d'un destructeur, doit-on détruire explicitement les objets membres ?
                        Dans le code du destructeur d'une classe dérivée, doit-on appeler explicitement le destructeur de la classe de base ?
                        Pourquoi et quand faut-il créer un destructeur virtuel ?
                5.3. Les amis (friend)(5)
                        Que signifie 'friend' ?
                        Les amis brisent-ils l'encapsulation ?
                        Quels avantages/désavantages y a-t-il à utiliser des fonctions friend ?
                        Que signifie "l'amitié n'est ni héritée ni transitive, ni réciproque" ?
                        Doit-on utiliser plutôt des fonctions membres ou plutôt des fonctions friend ?
                5.4. Les données et fonctions membres statiques(9)
                        Que signifie la déclaration suivante : "static const int MAX = 10" ?
                        Pourquoi déclarer un membre static dans une classe ?
                        Comment initialiser un membre static ?
                        Pourquoi les classes avec des membres statiques me donnent-elles des erreurs lors de l'édition des liens ?
                        Qu'est-ce que le "fiasco dans l'ordre d'initialisation des variables statiques" ?
                        Comment puis-je éviter le "fiasco dans l'ordre d'initialisation des variables statiques" ?
                        Pourquoi l'idiome de construction à la première utilisation utilise-t-il un pointeur statique plutôt qu'un objet statique ?
                        Comment puis-je éviter le "fiasco dans l'ordre d'initialisation des variables statiques" pour les données membres statiques ?
                        Dois-je me préoccuper du "fiasco dans l'ordre d'initialisation des variables statiques" pour les types de base ?
        6. Les fonctions(20)
                Pourquoi certaines fonctions membres possèdent le mot clé const après leur nom ?
                Quelle est la particularité d'une fonction membre static ?
                Qu'est-ce que le masquage de fonction ?
                Pourquoi ne peut-on pas passer une fonction membre là où on attend un pointeur de fonction ?
                Quel est l'équivalent C++ des paramètres variables ?
                Comment passer correctement des paramètres à ma fonction ?
                La fonction de ma classe entre en conflit avec une fonction standard, que faire ?
                6.1. Les fonctions membres virtuelles(5)
                        Que signifie le mot-clé virtual ?
                        Pouvez-vous me donner une raison simple pour laquelle la virtualité est si importante ?
                        Les fonctions virtuelles sont-elles un mécanisme important en C++ ?
                        Qu'est-ce qu'une fonction virtuelle pure ?
                        Qu'est-ce qu'un type de retour covariant ?
                6.2. Les fonctions inline(8)
                        Que se passe-t-il avec les fonctions inline ?
                        Un exemple simple d'intégration
                        Les fonctions inline améliorent-elles les performances ?
                        Comment les fonctions inline peuvent-elles influer sur le compromis vitesse/sécurité ?
                        Pourquoi utiliser une fonction inline au lieu d'une macro #define ?
                        Comment signaler au compilateur de mettre une fonction non membre inline ?
                        Comment signaler au compilateur de mettre une fonction membre inline ?
                        Y a-t-il un autre moyen de spécifier une fonction membre inline ?
        7. Les références(6)
                Qu'est-ce qu'une référence ?
                Que se passe-t'il si on assigne une autre valeur à la référence ?
                Que se passe-t-il en cas de retour d'une référence lors de l'appel d'une fonction ?
                Comment faire pour modifier une référence de façon qu'elle désigne un autre objet ?
                Quand utiliser des références et quand utiliser des pointeurs
                Qu'est-ce qu'un handle sur un objet ? une référence ? un pointeur ? un pointeur sur un pointeur ?
        8. Les opérateurs(17)
                8.1. Les conversions de types(3)
                        Comment effectuer une conversion de type explicite (cast) ?
                        Pourquoi l'utilisation du downcasting est-il souvent une pratique à éviter ?
                        Qu'est-ce que le cross-casting ?
                8.2. La surcharge d'opérateurs(14)
                        Qu'est ce que la surcharge d'opérateur ?
                        Quel est l'avantage de surcharger un opérateur ?
                        Quelques exemples de surcharge d'opérateur
                        La surcharge d'opérateur n'embellit pas vraiment ma classe ; ce n'est pas censé rendre le code plus lisible?
                        Quels opérateurs peut-on ou ne peut-on pas surcharger ?
                        Peut-on surcharger operator== de façon qu'il compare deux char[] en faisant une comparaison de chaîne ?
                        Peut-on définir un operator** qui calcule "x à la puissance y" ?
                        Comment implémenter un opérateur d'indexation pour une classe Matrix ?
                        Pourquoi est-il préférable que l'interface de ma classe Matrix ne soit pas basée sur le modèle du tableau de tableaux ?
                        Comment surcharger les opérateurs ++ et -- ?
                        Qu'est-ce qui est le plus rapide : i++ ou ++i ?
                        Qu'est-ce donc qu'une auto-affectation ?
                        Pourquoi l'auto-affectation peut-elle poser problème ?
                        Comment éviter les problèmes d'auto-affectation ?
        9. Gestion dynamique de la mémoire(18)
                Comment allouer de la mémoire ?
                Que se passe-t-il si new ne parvient pas à allouer la mémoire demandée ?
                Pourquoi utiliser new plutôt que malloc ?
                Comment libérer de la mémoire ?
                Que se passe-t-il si je fais un delete sur un pointeur qui vaut NULL ?
                Puis-je utiliser free() pour libérer un pointeur alloué par new ?
                Comment allouer dynamiquement un tableau ?
                Comment libérer un tableau alloué dynamiquement ?
                Comment allouer dynamiquement un tableau à plusieurs dimensions ?
                Comment libérer un tableau à plusieurs dimensions alloué dynamiquement ?
                Comment réallouer / agrandir une zone mémoire ?
                Comment récupérer la taille d'un tableau dynamique ?
                Peut-on déréférencer un pointeur NULL ?
                Est-il possible de forcer new à allouer la mémoire à une adresse précise ?
                Qu'est-ce que "placement new" et dans quels cas l'utilise-t-on ?
                Qu'est-ce qu'un pointeur intelligent ?
                Pourquoi faut-il se méfier de std::auto_ptr ?
                Comment gérer proprement des allocations / désallocations de ressources : le RAII
        10. Les namespaces(3)
                Qu'est-ce qu'un namespace ?
                Qu'est-ce qu'un namespace anonyme ?
                Comment définir l'implémentation d'une classe en l'ayant définie comme faisant partie d'un namespace ?
        11. Utilisation des exceptions(12)
                Qu'est-ce qu'une exception ?
                Comment lever une exception ?
                Comment capturer les exceptions dans mon code ?
                Pourquoi faut-il capturer les exceptions par référence ?
                Est-il possible de capturer plusieurs exceptions dans un seul catch ?
                Comment relancer une exception que l'on a capturé ?
                Que se passe-t-il si aucun bloc catch n'existe pour traiter une exception ?
                Comment créer son propre type d'exception ?
                Peut-on lever des exceptions dans les constructeurs ?
                Peut-on lever des exceptions dans les destructeurs ?
                Comment indiquer qu'une fonction ne lève jamais d'exception ?
                Quel est l'équivalent C++ du bloc finally des autres langages ?
        12. Les chaînes de caractères(30)
                Y a-t-il un type chaîne de caractères en C++ ?
                Quels sont les avantages de string par rapport à char* ?
                Utiliser string n'est-il pas plus lent ?
                Quelle est la différence entre char*, const char* et char const * ?
                Quelle est la différence entre #include <string> et #include <string.h> ?
                Quelle est la différence entre string::length() et string::size() ?
                Quelle différence entre string::size() et string::capacity() ?
                Comment convertir un char* en un string ?
                Comment convertir une string en char* ?
                Comment convertir un nombre en une string ?
                Comment convertir une string en un entier ?
                Comment convertir n'importe quel type d'objet en string ?
                Comment convertir une string en un objet de n'importe quel type ?
                Comment déterminer si une chaîne contient une valeur d'un certain type ?
                Comment fonctionne le test de réussite de conversion if ( str >> num ) ?
                Quelle est la différence entre string::data() et string::c_str() ?
                Quelles précautions faut-il prendre avec string::c_str() et string::data() ?
                Quelle est la différence entre string::find() et string::find_first_of() ?
                Comment manipuler des chaînes de caractères Unicode ?
                Comment manipuler des chaînes de caractères ne tenant pas compte de la casse ?
                Comment convertir une string en minuscule ?
                Comment convertir une string en majuscule ?
                Comment inverser le contenu d'une chaîne ?
                Comment découper une chaîne en fonction d'un séparateur ?
                Dans quels cas ne faut-il pas utiliser string ?
                Comment tester des chaînes de caractères dans un bloc switch ?
                [Piège] Comment initialiser/affecter un nombre à une string ?
                [Exemple] Comment supprimer des caractères d'une string ?
                [Exemple] Comment manipuler un nom de fichier avec string ?
                [Exemple] Comment manipuler un tableau de string ?
        13. Entrées / sorties avec les flux(27)
                A quoi sert std::endl ?
                Comment saisir une chaîne contenant des espaces ?
                Comment obtenir la représentation hexadécimale d'un entier ?
                Comment obtenir un entier à partir de sa représentation hexadécimale ?
                Comment manipuler la représentation d'un nombre dans différentes bases ?
                Comment formater l'affichage sur les flux ?
                Comment surcharger correctement l'opérateur << pour afficher des objets polymorphiques ?
                Comment effacer le contenu d'un ostringstream ?
                [Exemple] Comment convertir un tableau en chaîne ?
                13.1. Manipulation de la console(7)
                        Quelle est le différence entre #include <iostream.h> et #include <iostream> ?
                        A quoi sert "using namespace std;" ?
                        cout n'est pas reconnu à la compilation, que se passe-t-il ?
                        Comment purger le buffer clavier ?
                        Comment vérifier les valeurs saisies avec cin ?
                        Comment faire une pause (attendre que l'utilisateur tape une touche) ?
                        Est-il possible de simuler une saisie clavier ?
                13.2. Manipulation des fichiers(11)
                        Comment tester l'existence d'un fichier ?
                        Comment savoir si la lecture / écriture dans un fichier a réussi ?
                        Comment écrire à la suite d'un fichier existant ?
                        Comment détecter la fin de fichier lors de la lecture ?
                        Comment calculer la taille d'un fichier ?
                        Comment fonctionnent les tests d'ouverture de fichier if ( fichier ) et if ( !fichier ) ?
                        Comment faire pour lire un fichier ligne par ligne ?
                        Comment lire l'intégralité d'un fichier texte dans un buffer ?
                        Comment compter le nombre de lignes d'un fichier ?
                        Pourquoi n'ai-je pas le nombre de caractères attendus avec mon fichier ?
                        Comment effectuer des lectures / écritures binaires dans un fichier ?
        14. Les templates(8)
                Qu'est-ce qu'un template ?
                Comment créer une fonction template ?
                Comment créer une classe template ?
                Qu'est-ce que la spécialisation de template ?
                Qu'est-ce que la détermination automatique des paramètres templates ?
                Pourquoi mes templates ne sont-ils pas reconnus à l'édition des liens ?
                A quoi sert le mot-clé typename ?
                Peut-on créer un alias (typedef) sur des templates ?
        15. La STL(13)
                Qu'est-ce que la STL ?
                Qu'est-ce qu'un conteneur ?
                Qu'est-ce qu'un itérateur ?
                Comment créer et utiliser un tableau avec std::vector ?
                Dois-je effacer ce que j'ai stocké dans un vecteur ?
                Quel conteneur choisir pour stocker mes objets ?
                Comment supprimer correctement des éléments d'un conteneur ?
                Comment utiliser correctement les conteneurs standards avec du code C ?
                Qu'est-ce qu'un foncteur ?
                Qu'est-ce qu'un prédicat ?
                A quoi servent les fonctions bind1st et bind2nd ?
                [Exemple] Comment trier une séquence selon un critère personnalisé ?
                [Exemple] Comment détruire les pointeurs d'un conteneur ?
        16. Boost(3)
                Qu'est-ce que Boost ?
                Comment utiliser les pointeurs intelligents de Boost ?
                Comment découper une chaîne avec boost::tokenizer ?
        17. Divers(5)
                Comment exécuter une commande système ou un autre programme ?
                Qu'est-ce que C++0x ?
                Quelles sont les questions à poser pour savoir si un candidat connaît vraiment son sujet ?
                Comment accélérer la compilation de mes projets ?
                Mes calculs sur nombres flottants sont imprécis, que faire ?
        18. Problèmes avec les compilateurs(11)
                Mon programme plante ou se comporte bizarrement
                Mon programme se lance et se termine immédiatement sans que je ne puisse rien voir
                Mon programme C++ compile parfaitement avec gcc 2.x, et marque pleins d'erreurs avec gcc 3.x
                Devcpp se plaint de ne pas connaître le format de mon .lib
                Erreur "symbole externe non résolu _WinMain@16 référencé dans la fonction _WinMainCRTStartup"
                Peut-on utiliser la bibliothèque boost avec Visual C++ ?
                La STL livrée avec Visual C++ 6 est bugguée !
                Erreur C1010 avec Visual C++
                J'ai un problème avec Visual C++ qui n'est pas traité ici
                Ma STL provoque des fuites mémoires ! Est-ce normal ?
                La conversion de chaînes en majuscules / minuscules ne compile pas sous gcc

   sommaire    suivant   

Consultez les autres F.A.Q's

Valid XHTML 1.1!Valid CSS!


Ce document issu de http://www.developpez.com est soumis à la licence GNU FDL traduit en français ici.
Permission vous est donnée de distribuer, modifier des copies de cette page tant que cette note apparaît clairement.
Certaines parties de ce document sont sous copyright Marshall Cline Les codes sources présentés sur cette page sont libres de droits, et vous pouvez les utiliser à votre convenance. Pour le reste, ce document constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Ce document issu de http://www.developpez.com est soumis à trois licences, en fonction des contributeurs :
- Les contributions de Clément Cunin et LFE sont soumises aux termes de la la licence GNU FDL traduite en français ici. Permission vous est donnée de distribuer, modifier des copies des contributions de Clément Cunin et LFE tant que cette note apparaît clairement :
"Ce document issu de http://www.developpez.com est soumis à la licence GNU FDL traduite en français ici. Permission vous est donnée de distribuer, modifier des copies de cette page tant que cette note apparaît clairement".
- Les contributions de Marshall Cline sont sous copyright
- Pour ce qui est des autres contributions : Copyright © 2005 Developpez LLC : Tous droits réservés Developpez LLC. Aucune reproduction, ne peut en être faite sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. Cette page est déposée à la SACD.
Vos questions techniques : forum d'entraide Accueil - Publiez vos articles, tutoriels, cours et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones. Nous contacter - Copyright 2000..2005 www.developpez.com