Développer en langage C++
Quel mécanisme n?est pas disponible en C++
passage par référence
surcharge de variable
valeur par défaut pour les paramètres de fonctions
surcharge de fonctions
Etant données les variables int i, j ; et la fonction int& foo(const int&); quelle est la proposition qui génère une erreur à la compilation :
i = foo(j);
foo(j) = i*j;
foo(i++)++;
elles sont toutes valides
Dans quel contexte est-on obligatoirement amené à utiliser la pseudo variable this :
dans une méthode d?instance, pour accéder à une propriété de l?objet courant
dans une méthode de classe, pour accéder à une propriété de l?objet courant
dans une méthode d?instance, pour manipuler l?adresse de l?objet courant
dans une méthode de classe, pour initialiser les attributs statiques
Quelle caractéristique ne s?applique pas au destructeur C++ :
il est appelé implicitement quand un objet sort de sa portée
il est appelé par l?instruction delete
il peut recevoir des arguments
il n?a pas de valeur de retour
La surcharge d?un opérateur applicable sur des instances d?une classe ne peut pas s?effectuer par :
une fonction membre sans argument
une fonction globale avec 1 argument
une fonction membre avec 1 argument
une fonction globale sans argument
Etant donnée la fonction A& foo( void ); et les instances unA et autreA de la classe A, quelle instruction ne fait pas appel à l'opérateur d'affectation défini dans la classe A :
unA = autreA ;
A unA = autreA ;
unA.operator= ( autreA ) ;
foo () = autreA ;
Etant données les déclaration suivantes : A unA; B unB; Sachant que B hérite en public de A, quelle instruction génère une erreur à la compilation :
A * pA= &unB;
unA = unB;
unB = (B)unA;
B * pB = (B*)pA;
Pour une classe C héritant d?une classe B qui elle même hérite d?une classe A, lors de la création d?une instance de C, la chronologie d?exécution des constructeurs est :
A() puis B() puis C()
C() puis B() puis A()
l?ordre d?exécution est aléatoire
cette question n?a pas de sens
Etant données : class A { public : virtual void trace () { cout << "Trace A" << endl; } }; class B : public A { public : virtual void trace () { cout << "Trace B" << endl; } }; Quelle est l?expression qui affiche "Trace B" à l?écran :
A * pA1 = new A(); pA1->trace();
B * pB1 = (B*)new A(); pB1->trace();
A unA; B unB; unA = unB; unA.trace();
A* pA2 = new B(); pA2->trace();
Une fonction membre virtuelle ne peut pas être :
le mécanisme C++ permettant la mise en ?uvre du polymorphisme
une fonction membre dont l?adresse de la méthode est résolue à l?exécution
applicable à un destructeur
générée inline
Quelle classe n?existe pas dans iostream.h :
istream
ostream
errstream
iostream
Quel flux n?est pas prédéfini en C++ :
cout
cfile
cerr
cin
Etant donnée la définition suivante : template <class T, int i> class A{...}; Quelle est la proposition valide :
A<int, 3> unA;
class B : public A<char, 20> {...};
typedef A<char *, 20> C;
Une classe template est :
une classe paramétrable à l?aide d?un ou plusieurs types génériques
Une classe qui possède des attributs virtuels
une classe non instanciable
une classe qui possède des attributs persistants