In copy constructor I assign tmp = its_age;//new address where its_age link to dynamic memory, and previous value will be los for to prevent it i assign address to pointer *tmp
vlad from moscow, I understand what you wrote but its_age initialized in Constructor
No, it isn't. Your code was in the copy constructor. Your object was not constructed with the default constructor, but with the copy constructor, where its_age is not initialized before it is assigned to tmp. [Edit: Just in case that's not clear enough, in any constructor you are dealing with a new object, not one that existed prior to the constructor being called (i.e. not an object already constructed.)]
Of course, setting a global variable that's already pointing to dynamic memory doesn't make much sense anyway. You leak the memory that tmp was pointing to.