IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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 : 15
Nombre de questions : 153
Dernière mise à jour : 19/03/2004


Sommaire
        1. Information générale(5)
                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
        2. Généralités sur le C++(17)
                Dois-je apprendre le C avant le C++ ?
                Le C++ est-il un langage pratique ?
                C++ est-il un langage parfait ?
                Quels sont les enjeux associés aux techniques Orientées Objets ?
                Le C++ est-il un meilleur langage que .... ?
                Qui utilise le C++ ?
                Combien de temps faut-il pour apprendre le C++ ?
                Quelques caractéristiques du langage C++ d'un point de vue 'business'
                Les fonctions virtuelles sont-elles un mécanisme important en C++ ?
                Pouvez-vous me donner une raison simple pour laquelle la virtualité est si importante ?
                Le C++ assure-t'il la compatibilité avec le C ?
                Le C++ est-il normalisé ?
                Où puis-je obtenir une copie du standard ?
                Quelles sont les questions à poser pour savoir si un candidat connait vraiment son sujet ?
                Que signifie exactement "mauvais" dans cette FAQ ?
                Est-ce que j'utiliserai un jour ces constructions sataniques ?
                Comment le C++ permet-il d'améliorer le compromis entre fiabilité et simplicité d'utilisation ?
        3. Quelques définitions(10)
                Qu'est-ce que l'héritage ?
                Qu'est-ce qu'un objet ?
                Qu'est-ce qu'une bonne interface ?
                Qu'est-ce que l'encapsulation ?
                L'encapsulation contitue-t-elle un mécanisme de sécurité ?
                Qu'est-ce "this" ?
                Qu'est-ce que la surcharge ?
                Qu'est-ce qu'un namespace ?
                Que signifie le mot-clé virtual ?
                Qu'est-ce qu'une référence ?
        4. Ou trouver de la documentation sur le C++ ?(4)
                Quel livre acheter ou lire ?
                Ou puis-je trouver des cours à télécharger et à consulter ?
                Ou trouver un compilateur C++ ?
                Où trouver des librairies de fonctions toutes faites ?
        5. Les classes en C++(46)
                Qu'est-ce qu'une classe ?
                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 ?
                Qu'est-ce qu'une classe abstraite ?
                Qu'est-ce qu'une fonction virtuelle pure ?
                Que signifient public, private et protected ?
                Comment créer 2 classes qui font référence l'une à l'autre ?
                Que signifie la déclaration suivante : "statit const int MAX=10" ?
                Comment définir l'implémentation d'une classe en l'ayant définie comme faisant partie d'un namespace ?
                Pourquoi déclarer un membre static dans une classe ?
                Quelle est la particularité d'une méthode static ?
                Comment initialiser un membre static ?
                A quoi cela sert-il d'utiliser des accesseurs ?
                5.1. Les constructeurs(17)
                        Qu'est-ce qu'un constructeur ?
                        Y a-t-il une différence quelconque entre List x; et list 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)?
                        Pourquoi ne puis-je pas initialiser un membre statique dans la liste d’initialisation ?
                        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 object 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éocuper du "fiasco dans l'ordre d'initialisation des variables statiques" pour les types de base ?
                        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 ?
                        Puis-je surcharger 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 une 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 ?
                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 ?
        6. Les fonctions inline(8)
                Que se passe-t-il avec les fonctions inline ?
                Un exemple simple d'intégration
                Les fonctioons 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(7)
                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 ?
                Que signifie object.method1().method2() ?
                Comment faire pour modifier une référence de façon à ce 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. La surcharge d'opérateurs(12)
                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 à ce 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 ?
                La conception d'une classe doit-elle se faire plutôt par l'extérieur (on s'intéresse d'abord à l'interface) ou par l'intérieur (on s'intéresse d'abord aux données) ?
                Comment surcharger les opérateurs ++ et -- ?
                Qu'est-ce qui est le plus rapide : i++ ou ++i ?
        9. Entrées/Sorties Standards(5)
                Comment purger le buffer clavier ?
                Est-il possible de simuler une saisie clavier ?
                A quoi sert std::endl ?
                cout n'est pas reconnu à la compilation, que se passe-t-il ?
                A quoi sert using namespace std; ?
        10. La STL(4)
                Qu'est-ce que la STL ?
                Qu'est-ce qu'un Container ?
                Qu'est-ce qu'un Itérateur ?
                Dois-je effacer ce que j'ai stocké dans un vecteur ?
        11. Les pointeurs et les tableaux(12)
                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 plutot 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 ?
                Peut-on déréférencer un pointeur NULL ?
                Est-il possible de forcer new à allouer la mémoire à une adresse précise ?
        12. Les chaînes de caractère(6)
                Existe-t-il un type plus efficace que les char* du C pour représenter des chaînes de caractère ?
                Comment convertir une chaîne de caractères en nombre ?
                Comment convertir un nombre en chaîne de caractères ?
                 Comment déterminer si une chaîne contient une valeur correspondant à un type de donnée ?
                Comment convertir un char* en un string ?
                Comment convertir un string en char* ?
        13. Les fichiers et répertoires(3)
                Comment calculer la taille d'un fichier ?
                Comment tester l'existence d'un fichier ?
                Comment faire pour lire un fichier ligne par ligne ?
        14. Divers(10)
                La fonction de ma classe entre en conflit avec une fonction standard, que faire ?
                Puis-je utiliser des librairies écrites en C dans mes programmes C++ ?
                Pourquoi mes templates ne sont-ils pas reconnus à l'édition des liens ?
                Est-il possible de capturer plusieurs exceptions dans un seul catch ?
                Comment savoir si je dois dériver une classe ou l'encapsuler ?
                Mon programme C++ compile parfaitement avec gcc 2.x, et marque pleins d'erreurs avec gcc 3.x
                Pourquoi existet-il deux fichiers d'en-tête iostream et iostream.h et lequel utiliser ?
                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 ?


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