Voyons voir... celui-ci me parait encore plus tordu que les précédents
Quelle qu'en soit la raison, nous avons un objet que nous devons pouvoir construire de différente façons. Étant donné que nous sommes en août et que nous avons pas trop envie de réfléchir, nous choisissons de faire un constructeur pour chaque cas. Notre objet comporte une variable membre type qui indique quel constructeur a été utilisé pour créer l'instance. Mais lorsqu'on commence à jouer avec notre objet, ça donne des choses étranges:
Questions:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 #include <iostream> #include <string> #include <vector> using namespace std; struct Object { Object(const string & str = "") : type(0) {} Object(const char* str) : type(1) {} Object(int number) : type(2) {} Object(unsigned int number) : type(3) {} int type; }; int main() { vector<int> int_vector = { 1, 2, 3 }; vector<Object> object_vector = { int_vector[0] + "a" + int_vector[2], "", int_vector[0] + int_vector.size() + int_vector[2] }; for (auto it : object_vector) cout << it.type << endl; getchar(); return 0; }
Quel est l'output de ce programme?
Pourquoi?
Partager