Bonjour,
voici un exemple venant de cplusplus.com:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | // example: one class, two objects #include <iostream> using namespace std; class Rectangle { int width, height; public: void set_values (int,int); int area () {return width*height;} }; void Rectangle::set_values (int x, int y) { width = x; height = y; } int main () { Rectangle rect, rectb; rect.set_values (3,4); rectb.set_values (5,6); cout << "rect area: " << rect.area() << endl; cout << "rectb area: " << rectb.area() << endl; return 0; } |
On nous dit que sans appel à set_values() on a le droit à un UB parce que width et height ne sont pas défini (ce qui est vrai pour avoir testé ) Pourtant je pensais qu'il y avait alors un constructeur par défaut et que width et height se retrouvaient alors initialisés par défaut à 0. Où est l'erreur ?
+0
-0