El destructor se llaman cuando se destruye un objeto.
Al usar el return, el objeto(variable de la clase) _os se va fuera de scope(alcance) asique se llama al destructor automáticamente tras el return.
Pd: Disculpa, es el puntero this lo que se retorna con el objeto y se sale de scope.
Te he subido un pastebin con la traducción que hice del capitulo 8 del libro Apress learn cpp for game development que va de POO en la aue se explica y más cosas.
https://pastebin.com/jcg3yzEn
Al usar el return, el objeto(variable de la clase) _os se va fuera de scope(alcance) asique se llama al destructor automáticamente tras el return.
Pd: Disculpa, es el puntero this lo que se retorna con el objeto y se sale de scope.
Te he subido un pastebin con la traducción que hice del capitulo 8 del libro Apress learn cpp for game development que va de POO en la aue se explica y más cosas.
https://pastebin.com/jcg3yzEn