Prova n° 1
codice:
#include <iostream>
#include <stdlib.h>
#include <memory>
using namespace std;
class Prova
{
public:
Prova(){cout<<"\nCreato l'oggetto Prova!";};
~Prova(){cout<<"\nDistrutto l'oggetto Prova!";};
void run(){cout<<"\nProva is running!";};
void pause(){cout<<"\nProva is paused!";};
void termin(){cout<<"\nProva is terminated!";};
};
class Oggetto
{
public:
Oggetto(){cout<<"\nCreato l'oggetto Oggetto!";};
Oggetto(shared_ptr<Prova> puntatore):mProva(puntatore){cout<<"\nCreato l'oggetto Oggetto!";};
~Oggetto(){cout<<"\nDistrutto l'oggetto Oggetto!";};
void run(){cout<<"\nOggetto is running!";mProva->run();};
void pause(){cout<<"\nOggetto is paused!";mProva->pause();};
void termin(){cout<<"\nOggetto is terminated!";mProva->termin();};
private:
shared_ptr<Prova> mProva;
};
int main()
{
{
unique_ptr<Prova> prova(new Prova);
prova->run();
prova->pause();
prova->run();
prova->termin();
}
system("pause");
return 0;
}
Al termine dell'esecuzione vedo che viene richiamato il distruttore di prova.