mais je ne connais aucun langage permettant facilement le choix entre copie/référence, const/mutable
Tu ne fais pas d'effort, il suffit de se documenter sur Ada :)
proceduretest(A: inInteger)-- Passage par copie car tient sur un registre mais A est constant dans le corpsproceduretest(A: inBigObject)-- Passage par référence car trop gros mais toujours constant dans le corpsproceduretest(A: outInteger)-- La valeur initiale n'a pas d'importance mais là, c'est forcément un référenceproceduretest(A: inoutInteger)-- Les deux cas précédentsproceduretest(A: inaccessBigObject)-- Là, on a clairement affaire à un pointeur qu'il faut déréférencerproceduretest(A: innotnullaccessBigObject)-- pareil mais on sait qu'il ne sera pas nulproceduretest(A: inaccessconstantBigObject)-- et celui-là, on ne peut pas modifier le pointé
Je n'ai pas mis d'exemple mais lorsque l'on passe un objet issu d'un type taggué (en gros, un objet qui autorise la POO), celui-ci est forcément passé par référence.
[^] # Re: Godbolt
Posté par Blackknight (site web personnel, Mastodon) . En réponse au journal Le quiz c++ de l'été. Évalué à 10.
Tu ne fais pas d'effort, il suffit de se documenter sur Ada :)
Je n'ai pas mis d'exemple mais lorsque l'on passe un objet issu d'un type taggué (en gros, un objet qui autorise la POO), celui-ci est forcément passé par référence.
Pour les quelques curieux, voici les deux pages intéressantes sur le Wikibook, celle sur les passage de paramètres et celle des pointeurs.