IFT 339: Structures de données
Daniel Lemire, Ph.D.
Exercices 1
Dans le contexte de nos conventions pour IFT339, trouvez les erreurs dans le code suivant...(au moins 3!)
double moyenne( int* valeurs, int l) {
int m = 0; // moyenne
for (int k = 0; k < l; ++k) {
m += valeurs[k];
}
if (l == 0) // si l est égal à zéro
return 0d;
return (double)m/l;
}
Vrai ou faux, une classe dérivée est une classe concrète?
Vrai ou faux, si « Nombre » est une classe abstraite alors l'instruction « Nombre n; » causera un crash à l'exécution?
Une fonction qui prend comme argument une classe abstraite est un exemple de polymorphisme statique ou dynamique? Et s'il s'agit d'une classe générique?
Donner au moins deux raisons pour expliquer que les programmeurs déclarent la représentation d'un objet private ou protected par opposition à public.
Donner les 4 fonctions implicites d'une classe...
Est-ce que le code suivant va compiler...? Si oui, que va-t-il afficher?
#include <iostream>
using namespace std;
class C {
public:
C(int n = 1) { _n = n; cout << "starting, n=" << _n << endl;};
~C() {cout << "done" << endl;}
private:
int _n;
};
int main() {
C c;
c = 5;
return 0;
}
Est-ce que le code suivant va compiler...
class A {
private:
int n;
};
class B : public A {
public:
int foo {return n;}
};
Vrai ou Faux, le copieur est appelé lors d'un passage par valeur?