@BlackWhite: here is an example of how you should work. When you want to call the deconstructor, let the variable go out of scope or delete it.
Code:
http://codepad.org/1jq6nsQF
Output:
Code:
test() called!
>Animal("Schnickelfritz") called!
>Cat("Schnickelfritz") called!
>~Cat("Schnickelfritz") called!
>~Animal("Schnickelfritz") called!
test() returned!
deltest() called!
>Animal("Koobenfarben") called!
>Cat("Koobenfarben") called!
>~Cat("Koobenfarben") called!
>~Animal("Koobenfarben") called!
deltest() returned!