Académique Documents
Professionnel Documents
Culture Documents
bool
int
double
real
wchar
void main() {
int a=1, b=2;
swap(a, b);
cout << a << b;
}
01
12
Les entiers étant passés par valeur, la permutation effectuée dans la fonction swap est sans
effet sur a et b.
Défragmenter la mémoire
Détruire un objet
Défragmenter la mémoire
a=1, b=1
après (1) a=1, b=2 après (2) a=2, b=2 après (3) a=3, b=2 après (4) a=1, b=1
a=1, b=2
a=2, b=1
a=2, b=2
throw;
throw();
throw();
rethrow;
Les réponses 1, 2 et 3
C'est impossible
[]
()
Tous
true
false
-1
A a = a1;
La première instruction est une initialisation. C'est le constructeur de copie qui est appelé et
non l'opérateur d'affectation.
a = a1;
a.operator=(a1);
ra1 = a;
La compilation échoue
Un constructeur qui initialise les membres à 0 (ou null) est généré par le compilateur
Un constructeur qui lève une exception INVALID_CTOR est généré par le compilateur.
Que se passe-t'il si l'on ne définit pas d'opérateur d'affectation dans une classe ?
La compilation échoue
Un operateur = qui fait une copie membre à membre est généré par le compilateur
Un operateur = qui fait un appel au constructeur de copie est généré par le compilateur
T T::T(T original) { … }
T::T(const T original) { … }
T::T(T original) { … }
Qu'est-ce qu'il n'est pas possible de faire dans une classe abstraite ?
pic = &IC;
pic = &i;
*pic = IC;
pic est un pointeur sur un entier constant. Donc *pic est une constante qui ne saurait être
affectée.
i = *pic;
Que peut-on facilement utiliser à la place de l'héritage privé pour arriver au même
résultat ?
Agregation + délégation
Héritage virtuel
La surcharge de l'opérateur []
Soit une classe T et t un objet de type T. Quelle fonction faut-il implémenter pour
pouvoir écrire le code suivant :
cout << t ;