You don't need your own destructor unless you explicitly did any special memory allocation (on the heap). Your code should be fine, because the compiler supplies the default destructor.
BUT. And this is a big ass but...
As avansc said, something like an image is not only loaded into main RAM, but also video RAM. You must free things in VRAM explicitly. In SDL it's SDL_FreeImage() (or some shit), on the Dreamcast it's pvr_mem_free(). Whatever your video RAM equivalent of free()/delete is that is provided by your API had damn well better be called on any textures existing in VRAM.
I just thought I would just add on to what has already been said.
If you simply call delete on the pointer to the object of class object, and you haven't written a destructor when you've allocated memory to pointer within the object, then it just deletes the pointers (not the allocated memory) and the members that make up the object you just deleted, which of course would create a memory leak, this is solved by calling the API's specific memory freeing function, e.g. SDL_FreeSurface() for SDL_Surface* to any dynamically allocated objects you created during the life of the parent object. (thus the need for the destructor!)
I had a bit of trouble wording that right,I had to substitute the phrase object quite a lot for that to make sense, so when I said member I was referring to an object within the larger class called object, if I've confused the issue when I was trying to simplify it, then I apologise, and just take on board the very good explanations offered above.
---------------------------------------------------------------------------------------
I think I can program pretty well, it's my compiler that needs convincing!
--------------------------------------------------------------------------------------- And now a joke to lighten to mood :D
I wander what programming language anakin skywalker used to program C3-PO's AI back on tatooine? my guess is Jawa :P