The formatting is a bit messed up, making your question hard to read. I can see four different ways to interpret it.
What I think you are asking is if you can use member initializer lists or a similar syntax for a destructor. No, you cannot. Constructors do quite a lot of special work under the hood, and it potentially is quite slow. Initializer lists reduce the complexity of some of that work, in addition to providing a potentially more simple syntax.
But you might be asking different questions, I'm not sure because of your formatting.
If you are asking about calling new during constructors, it is possibly legal depending on details, and it is bad form so you should avoid it.
Doing this is potentially very bad in code:
MyClass::MyClass() : mSomeInts (new int[32]) { ... }
The biggest problem is from exceptions. If new throws an exception it leaves a partly-constructed object and the destructor isn't called. There are plenty of unexpected ways that type of allocation can leak resources or crash the program. There is a way to wrap try/catch blocks around constructors but it isn't pretty and it can be confusing.
In general it is bad form for default constructors to do any work at all other than to make an empty object. Containers and classes representing larger resources should generally be set to an empty state. You might provide additional functions that allocate resources, and provide additional constructors that do the work if you must, but they should not be the default constructor. Constructors are called all the time, including for things like making large arrays and the compiler creating temporary objects. Creating an empty object is generally nearly instant, just initialize counters to zero and pointers to nullptr.
Or, you might also be asking about the nature of cleaning up resources. Most objects have both allocation and release functions, those aren't part of the constructor but instead functions that trigger allocating resources and functions that release the resources. In that regard, it is very important for destructors to take a sane response for resources it owns. Usually that means releasing the resources directly, simply call your cleanup function during the destructor. It can also mean generating warnings, log entries, or even assertions and crashing the program if in object is destroyed without first calling the appropriate release functions.
This line suggests yet another interpretation: will delete the button properly on exit of the program.
Exiting a program is a special case. When the program is exiting on a modern operating system, the OS wipes most systems (memory, disk handles, graphics resources, etc) clean automatically. I like the quote, "When you're tearing down a building you don't need to empty the trash." Although it is becoming less common due to certain language choices, when a program is exiting there is often no need to go through the slow and deliberate cleanup process. For example, if you've got a bunch of audio files loaded there is usually no purpose to go through each element of the audio files and release the resources one at a time for thousands of tiny details if your program can also provide a simple "drop all the memory" command. You still need to provide the functionality for the general case of loading and unloading resource over the course of the program, this is only at application exit.
When games load millions of objects during the course of running the cleanup can take an awful long time if each one must be individually destroyed. Some libraries provide functionality to unilaterally dump all the resources. Games can use it when dropping everything related to an unloaded level, or when ending the game. I've seen programs (several in-house tools) that instantly terminate the program with abort() allowing the operating system to wipe the slate clean, and it exits instantly.
That is not true of all cases. If you have unsaved data exiting the program better save the user's data, or perhaps prompt the user to avoid exiting. But if you're merely dumping data that will not be reused nor the memory reclaimed for the program's later use, cleanup isn't necessary. Rather than deconstructing all the structures in the program one nail and one 2x4 at a time, just throw the match and let the OS sweep up the ashes.