On peut écrire une méthode qui sera implicitement / automatiquement appelé lors de la fin de "vie" de l'objet. Cette méthode est appelées destructeur son identifiant est celui de la classe précédé par ~. Il ne doit pas avoir de paramètre.
class{
int v;
public:
A(int p) : v{p}{
cout<< "Je suis construit" << v << endl;
}
~A(){
cout << "Je suis détruit" << v << endl;
}
}
void f(){
A p{4};
}
int main(void){
A p{1}; //je suis construit 1
{
A g{2}; //je suis construit 2
} // je suis détruit
f(); // je suis construit 4
//je suis détruit 4
A e{7}; //Je suis construit 7
} // Je suis détruit 7
// Je suis détruit 1
On peut initialiser une référence sur "type const" avec une expression qui ne possède à priori pas d'adresse.
int a;
int& r1 = a;
const int&r2 = a;
const int& r3 = 3; //ok
const int b = 3;
//int &r4 = b; //erreur !
const int& r5 = b //ok