Je vais prendre un exemple en C# mais ça pourrait marcher avec beaucoup d'autres langages j'imagine.
Imaginons une classe Classe
qui a comme seule variable membre une variable de type référence (c'est important pour la suite), disons une autre classe qu'on appellera Typemembre
___
On déclare notre Classe quelque part sans l'initialiser :
Classe classe;
puis, à l'intérieur d'une fonction, on l'initialise en passant à son constructeur notre Typemembre
:
void foo(){
...
Typemembre typemembre = new Typemembre(xxx);
classe = new Classe(typemembre);
}
Une fois qu'on est sorti de cette fonction, typemembre est détruit, or il a été passé par référence puisque c'est un type par référence.
Pourtant on a bien accès à la valeur de typemembre (qui a été transférée et potentiellement modifiée par la suite par la classe, mais peu importe ici) lorsqu'on utilise l'instance classe par la suite.
A quel moment se fait la copie de la valeur de typemembre à l'intérieur de l'instance classe ?