Skip to content
Snippets Groups Projects
Commit b606ad2b authored by orestis.malaspin's avatar orestis.malaspin
Browse files

updated ownership

parent 78929b2d
Branches
No related tags found
No related merge requests found
Pipeline #
......@@ -152,10 +152,15 @@ fn main() {
notebook.push("Les oiseaux chantent.");
do_something(notebook); // ownership transféré à do_something
// do_something(notebook); // redo something
do_something(notebook); // ici notebook ne possède plus ses données
// => erreur de compilation!
}
</code></pre>
. . .
Le transfert de l'ownership est complètement décidé à la **compilation**.
## Ownership en pratique
Ce qui se passe en mémoire:
......@@ -168,6 +173,28 @@ Ce qui se passe en mémoire:
**`notebook` est détruit à la fin de `do_something` et ne peut plus être réutilisé**
## Ownership en pratique
En C++ une sytaxe similaire a un effet complètement différent
```
void do_something(notebook: vector<string>) {
// Do something with the notebook
} // la variable locale notebook est détruite et ses données aussi
// le notebook du main existe toujours
void main() {
vector<string> notebook; // par défaut notebook est mutable
notebook.push_back("Il fait beau.");
notebook.push_back("Les oiseaux chantent.");
do_something(notebook); // le copy-constructeur de notebook
// est invoqué
do_something(notebook); // on peut réutiliser notebook sans problème
}
```
<!-- - `vector` et `string` sont alignés en mémoire.
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment