#initializelist — Public Fediverse posts
Live and recent posts from across the Fediverse tagged #initializelist, aggregated by home.social.
-
CW: Ще одна підстава C++
class Point { int x, y; public: Point(int a) : y(a), x(y) {} };Спочатку здається що все добре у цьому коді, але насправді не так, тому що спочатку
xпроініціалізується значеннямy, а вже потімyзначенням аргументуa. Вийде щоxбуде мати випадкове значення. У цьому прикладі все може бути замітно зразу оскільки це тільки маленький приклад, але в реальності не все так просто. Добре що компілятори вміють про це попереджувати, якщо вказати прапорець-Wall.<stdin>: У конструкторі «Point::Point(int)»: <stdin>:2:9: попередження: «Point::y» буде ініціалізовано після [-Wreorder] <stdin>:2:6: попередження: «int Point::x» [-Wreorder] <stdin>:4:2: попередження: коли він ініціалізується тут [-Wreorder] <stdin>:4:25: попередження: член «Point::y» використовується без ініціалізації [-Wuninitialized]#cpp #cxx #class #stuct #constructors #initializelist #ООП #ініціалізація #конструктори