0% found this document useful (0 votes)
64 views

Partie I: Question de Cours

The second part of the document contains 4 exercises to debug and run C++ programs involving classes. The first exercise corrects errors in a program using the cube function and demonstrates order of operations. The other exercises create Point and Circle classes and demonstrate constructors, destructors, static and dynamic memory allocation, and passing objects between functions

Uploaded by

ali ahmed
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
64 views

Partie I: Question de Cours

The second part of the document contains 4 exercises to debug and run C++ programs involving classes. The first exercise corrects errors in a program using the cube function and demonstrates order of operations. The other exercises create Point and Circle classes and demonstrate constructors, destructors, static and dynamic memory allocation, and passing objects between functions

Uploaded by

ali ahmed
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 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