( mrev | 2013. 03. 26., k – 12:57 )

1) Érték szerinti paraméterátadás: A program az adatból csinál egy másolatot, és a másolatot a stackre teszi. A másolat készítése különféle esetekben különféle módon történhet (pontosan úgy, mint egy síma értékadásnál): Elemi adatoknál triviális, struktúráknál sekély (!) másolat, objektumoknál copy konstruktor (ami akármilyen bonyolult lehet).

2) Cím szerinti paraméterátadás: Nem készül másolat az adatból, hanem az adat címe kerül a stackre.

3) A C++ specialitása a referencia. Ugyanaz, mint a cím szerinti paraméterátadás, kivéve, hogy a hívott programban a derefelés automatikus.

Meg kell gondolni, hogy mikor mi kell, mi fog változni, melyik változás honnan látszik, honnan nem. Néha elemi adatot is cím szerint adunk át, ha a hívott program módosítani akarja az eredeti adatot. Ha egy összetett adatot cím szerint adunk át, akkor a hívott program módosíthatja a struktúra tartalmát/belsejét. Ez ellen nem véd a const pointer, mert a hívott program castolhat síma pointerre. Ezért értelme lehet egész struktúrák stackre pakkolásának is. Gyakorlásképpen ezeket ki kell próbálni kis példaprogramokon, tipikus módszer: printf a konstruktorból.

--
ulysses.co.hu