When defining classes, it is now common to use = default
for the destructor/copy constructor and copy assignment. Looking at my code base, these are nearly always in the header files only but some colleagues have put them in the .cpp
file. What would be the best practice in this case?
Is the compiler generating these functions multiple times when it is in the header and relying on the linker to dedup them. Is it perhaps only worth putting them in the .cpp
file if you have a huge class? With our mostly old C++98 code, functions that do nothing are also often defined only in the header. Do nothing virtual destructors seem to have often been moved to the .cpp
file. Is (or was) it somehow important for virtual methods where their address is needed to populate the virtual method table.
Also is it recommended to ever put noexcept()
clauses on = default
functions? The compiler appears to derive this itself so it only serves as API documentation if it is there.
Aucun commentaire:
Enregistrer un commentaire