Langage C++, aspects avancés
Etant donnée la définition suivante : class A { public : static int foo(); }; Quel est l?appel valide de la fonction membre foo.
A::foo();
A.foo();
A->foo();
foo();
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; }
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 ;
Quel opérateur ne peut-on pas surcharger en C++ :
.
[ ]
->
new
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 { ? };
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 syntaxe n?a pas de sens en C++ :
virtual void f1 ( void ) ;
virtual void f2 () = 0 ;
virtual void f3 ( int i = 0 ) ;
virtual void f4 () = abstract;
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