3 ms·
While it doesn't excuse the bad habits, we do have to keep in mind C++98 (or whatever more ancient was used back then) didn't have the simple initializers we no
by trinix912 2y ago
While it doesn't excuse the bad habits, we do have to keep in mind C++98 (or whatever more ancient was used back then) didn't have the simple initializers we now take for granted. You couldn't just do 'Type myStruct = {};' to null-initialize it, you had to manually NULL all nested fields. God forbid you change the order of the variables in the struct if you're nesting them and forget to update it everywhere. It was just considerably more practical to do 'Type myStruct;' then set the fields when needed.
- badc0ffee 2y agoYou could always `bzero` or `memset` the entire struct to 0.
- trinix912 2y agoBut only if it contains strictly POD members, otherwise it's UB.
- mrighele 2y agoI haven't been using C++ for a number of years but I think you could set the default values of fields even back then. Something like struct test { int my_int = 0; int* my_ptr = std::nullptr; }; Or is this something more recent ? You cannot initialize them with a different value unless you also write a constructor, but it not the issue here (since you are supposed to read them from the file system)
- MrRadar 2y agoThat's C++11 syntax. Before then you'd have to manually initialize them in every constructor, with a hand-written default constructor as a minimum: struct test { int my_int; int *my_ptr; test() : my_int(0), my_ptr(NULL) {} };