Développer en langage C++
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
Quelle syntaxe n?est pas correcte :
void f1 ( int & val ) ;
void f2 ( const int & val ) ;
void f3 ( char * val = NULL) ;
void f4 ( int = 0, char * ) ;
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; }
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
Etant données les déclarations suivantes : int& operator[] (const char *); //fonction membre de la classe X X unX ; int i = 0 ; Quelle est la proposition invalide :
i = unX["chaine"];
unX[i]++;
unX["chaine"]++;
unX["chaine"] = i;
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;
En C++, une classe dérivée ne peut pas :
redéfinir des méthodes de sa classe de base
hériter de plusieurs classes
invoquer des méthodes publiques de sa classe de base
accéder à des données privées de sa classe de base
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();
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
Quel flux n?est pas prédéfini en C++ :
cout
cfile
cerr
cin
Quelle classe n?existe pas dans iostream.h :
istream
ostream
errstream
iostream
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;
Quel mécanisme n?est pas disponible en C++ :
dynamic cast
static cast
l'opérateur kindOf
les namespaces