Langage C++, aspects avancés
Etant donnée la fonction membre int foo (int = 0); déclarée dans la classe X, quelle est la définition déportée de cette fonction membre :
int X::foo(int val) {... return val; }
int X::foo(int val = 0) {... return val; }
X:: int foo(int val = 0) {... return val; }
int X. foo(int val ) {... return val; }
Une classe Y friend d?une classe X permet :
à la classe Y d?hériter des propriétés de la classes X
aux instances de la classe Y d?être compatibles par affectation avec des instances de la classe X
aux méthodes de la classe Y d?accéder aux propriétés private de la classe X
aucune de ces propositions
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
Quel opérateur ne peut-on pas surcharger en C++ :
.
[ ]
->
new
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 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;
Quelle assertion sur les classes abstraites est fausse :
non instanciable
contient des méthodes virtuelles pures
ne contient jamais d?attribut
une classe dont on peut hériter
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