+ 1

i am confused about the output of a destructor qusetion,what does destructor ACTUALL do when it is called....

here is the question: #include <iostream> using namespace std; class A{ public: ~A() {cout<<"A";} }; int main() { A a; a.~A(); return 0; } and the output of the program above is"AA" i wonder what does the destructor do,and is there anything happened in the memory when ~A() is called?

29th Sep 2016, 7:15 AM
iwbtg_wang
iwbtg_wang - avatar
2 Answers
+ 1
Destructor does something important that must be done before the instance is deleted. BUT THIS IS ALSO "FUNCTION". This is just called automatically before the instance is deallocated. So a.~A() will just print "A". when a.~A() is called, nothing happens in the memory space, and there is NOTHING to happened even after a.~A() finishes. (Of course, when a.~A() is called as program ends, after it finishes the memory of a will be deallocated.)
29th Sep 2016, 7:54 AM
kiwiyou
kiwiyou - avatar
0
destructor is a function which run before program exit.. destructor is used to destroy object,,, free up the memory... u don't need to call it from main function.. it will automatically run before program exit.. #include <iostream> using namespace std; class A{ public: A(){cout << "C" << endl} // print C when we create class A object.. ~A() {cout<<"D";} // prints D before program exit }; int main() { A a; // create class A object a //costructor will called // destructor will called return 0; }
29th Sep 2016, 8:04 AM
Saif Maruf
Saif Maruf - avatar