That cleanup can be explicit when needed by using context managers. Mixing resource handling with object lifetime is a bad design choice
Tell that to the C++ guys...