Well no because if you allocate stuff in the constructor, you are going to write a destructor now, freeing that allocated stuff up / closing that socket, pipe whatever etc.
If I do it straight after the constructor, then definitely but if I get distracted by something else then it’s only probably until I run it through valgrind and see the leak. These days, I mostly use smart pointers in new code though so there are fewer opportunities to need a destructor. It’s funny that I never forget when opening a file or db connection!
There’s always a destructor though. It may do nothing but it’s there.
No need to declare it though ofc.
Rule of 0/3/5
Yeah the compiler generates it so it’s always there
Well yes, except when you allocate stuff in the constructor.
The compiler will still generate one. It won’t be any use but it will be generated :)
Well no because if you allocate stuff in the constructor, you are going to write a destructor now, freeing that allocated stuff up / closing that socket, pipe whatever etc.
Right?
Right??
If I do it straight after the constructor, then definitely but if I get distracted by something else then it’s only probably until I run it through valgrind and see the leak. These days, I mostly use smart pointers in new code though so there are fewer opportunities to need a destructor. It’s funny that I never forget when opening a file or db connection!