Topic de Pipeline2Foutre :

Comment est-ce qu'un compilateur sait quand il doit copier des variables locales ?

  • 1

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 ?

  • 1

Données du topic

Auteur
Pipeline2Foutre
Date de création
26 novembre 2022 à 02:31:40
Nb. messages archivés
6
Nb. messages JVC
5
En ligne sur JvArchive 339