Professional Documents
Culture Documents
a- Orienté objet
b- Fonctionnel
c- Impératif
d- Statiquement typé
a- Un sous-objet
b- Un sous-type
c- Une sous-classe
4- Quelle est la différence entre une class et une struct ? Cocher les propositions correctes :
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
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é
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:
#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" ;
}
}
#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) ;
}