Langage C++, aspects avancés
Quelle est la fonction membre permettant d?initialiser une instance d?une classe A possédant un attribut de type int :
void initA ( int val ) ;
A ( int val = 0 ) ;
A createA ( int val ) ;
void A ( int val ) ;
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
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
Quand doit-on redéfinir l?opérateur d?affectation dans une classe :
en toutes circonstances
lorsque la classe possède des attributs alloués dynamiquement
lorsque la classe possède des propriétés statiques
lorsque la classe possède un destructeur
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
Quelle est la syntaxe correcte pour que la classe B hérite de A :
class B implements A { ? };
class B extends A { ? };
class B : public A { ? };
class B inherited A { ? };
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
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();