mysterious destructors
I have written the following program:
#include <iostream>
#include <ostream>
struct c
{ int v;
c( int const x ): v( x )
{ ::std::cout << "constructor of instance #" << v << ".\n"; }
~c(){ ::std::cout << "destructor of instance #" << v << ".\n"; }
void print(){ ::std::cout << "I am instance #" << v << ".\n"; }};
int main()
{ c o = * new c( 1 );
o.print();
o = * new c( 2 ); /* overwrite */
o.print(); }
The program prints:
constructor of instance #1.
I am instance #1.
constructor of instance #2.
I am instance #2.
destructor of instance #2.
In the line marked with ?/* overwrite */?, instance #1 in the
variable ?o? is overwritten with another instance of the same
class c if I understand it correctly.
I thought that this overwriting kind-of ?destroys? the instance #1
and that this might invoke the destructor of instance #1. But no,
it does never print ?destructor of instance #1.?.
I am still a beginner with respect to some parts of C++, so
I have to ask here why my expectations are wrong.