I just discovered from this Q/A that structs are inheritable in C++ but, is it a good practice, or is it preferable to use classes? In which cases is preferable and in which ones is not?
I have never needed this, but now I have a bunch of messages of different types, but same longitude. I got them in binary in a char array, and I just copy them with memcpy to the struct to fill its fields (I don’t know if it is even possible to do it with std::copy).
I guess it would be great to be able to inherit every struct from a base struct with common headers, that is why I searched for this. So a second question would be: if I do this with classes, is it possible to do a memcpy (or std:copy) from a buffer to a class?
Whether you can use a bitwise copy or not has nothing to do with the
structorclasstag and only depends on whether saidstructorclassis_trivially_copiable. Whether they are is defined in the Standard (9/6 [class]) and it basically boils down to not having to declare any other special member methods than constructors.The bitwise copy is then allowed by the Standard in 3.9/2 [basic.types]
Note: a bitwise copy of padding bytes will lead to reports in Valgrind.
Using
std::copyto the same effect: