You are on page 1of 4

Partie I : Question de cours :

1 - C++ est un langage :

a- Orienté objet
b- Fonctionnel
c- Impératif
d- Statiquement typé

2- Si la classe D dérive de la classe B, on dit que B est………… de D.

a- Un sous-objet
b- Un sous-type
c- Une sous-classe

3- Si A et B dérivent de X, C dérive de Y, et D dérive de X et Y, et E dérive de A. Si une fonction attend en


argument un objet de type X, on peut lui passer un objet de type :
a- A
b- B
c- C
d- D
e- E
f- X
g- Y

4- Quelle est la différence entre une class et une struct ? Cocher les propositions correctes :

a- Classe hérite d’une autre classe


b- Dans une struct on peut définir des fonctions membres
c- Une struct supporte l’héritage
d- Dans une classe on peut définir des fonctions membres

5- Si dans la déclaration d'une classe A on trouve la ligne friend class B; cela veut dire que :

a- les fonctions membres de la classe B peuvent accéder aux membres privés de la classe A
b- les fonctions membres de la classe A peuvent accéder aux membres privés de la classe B

6 - L'héritage permet :

a- la généricité
b- le polymorphisme

7- Les modèles (templates) permettent :

a- la généricité
b- le polymorphisme

8- Dans le cas du polymorphisme, quelle(s) fonction(s) membre(s) en particulier il est important de déclarer
comme étant virtuelle(s) ?

a- le constructeur
b- le destructeur
c- toutes celles qui modifient l’état de l'objet
9- Lorsqu'on surcharge une fonction, on peut modifier :
a- le type de sa valeur de retour
b- son nom
c- les types de ses arguments
d- son arité

10- Lorsqu'on surcharge un opérateur, on peut modifier :


a- sa priorité
b- son associativité
c- son arité
d- sa commutativité

Partie II : Exercice de compréhension :

Exercice N°1 : Déboguer, puis corriger les erreurs du programme suivant pour avoir
l’affichage ci-dessous :

#include <iostream>
using namespace std ;
#define cube(x) x*x*x
Inline int cube(int X) { return X*X ; }
main() {
int a = 1 ;
int b = cube(a) ;
int c = cube(a++);
int f = cube(++a);
cout <<"a ="<< a <<" b="<< b <<" c="<< c << " f="<< f <<endl ;
int D = 2 ;
int E = CUBE(D);
int H = CUBE(D++);
int K = CUBE(++D);
cout <<"D ="<< D <<" E="<< E <<" H="<< H << " K="<< K <<endl ;
system("pause");
}

Affichage:

a=7 b=1 c=6 f=252

D=4 E=8 H=8 K=64

Exercice N°2 : Corriger et exécuter le programme ci-dessous. Que permet d’afficher ce


programme:

#include <iostream>

class point
{ int x, y ;
public :
point (int abs, int ord) // constructeur ("inline")
{ x = abs ; y = ord ;
cout << "++ Construction d’un point : " << x << " " << y << "\n" ;
}
~point () // destructeur ("inline")
{ cout << "-- Destruction du point : " << x << " " << y << "\n" ;
}
}

point a(1,1) ; // un objet statique de classe point


main()
{ cout << "****** Debut main *****\n" ;
point b(10,10) ; // un objet automatique de classe point
int i ;
for (i=1 ; i<=3 ; i++)
{ cout << "** Boucle tour numero " << i << "\n" ;
point b(i,2*i) ; // objets créés dans un bloc
}
cout << "****** Fin main ******\n" ;
}

Exercice N°3 : Corriger et exécuter le programme ci-dessous. Que permet d’afficher ce


programme:

#include <iostream>
class point
{ int x, y ;
public :
point (int abs, int ord) // constructeur
{ z=abs ; y=ord ;
cout << "++ Appel Constructeur \n" ;
}
~point () // destructeur (en fait, inutile ici)
{ cout << "-- Appel Destructeur \n" ;
}
} ;
main()
{ void fct (point *) ; // prototype fonction fct
point * adr ;
cout << "** Debut main \n" ;
adr = new point (3,7) ; // création dynamique d’un objet
fct (adr) ;
cout << "** Fin main \n" ;
}
void fct (point * adp)
{ cout << "** Debut fct \n" ;
delete adp ; // destruction de cet objet
cout << "** Fin fct \n" ;
Exercice N°4 : Corriger et exécuter le programme ci-dessous. Que permet d’afficher ce
programme:

#include <iostream>
using namespace std ;
class point
{ int x, y ;
public :
point (int abs=0, int ord=0)
{ x=abs ; z=ord ;
cout << "Constr. point " << x << " " << y << "\n" ;
}
} ;
class cercle
{ point centre ;
int rayon ;
public :
cercle (int , int , int) ;
} ;
Cercle::Cercle (int abs, int ord, int ray) : centre(abs, ord)
{ rayon = ray ;
cout << "Constr. cercle " << rayon << "\n" ;
}
main()
{ cercle a (1,3,9) ;
}

You might also like