Alapértelmezett argumentum

A programozásban az alapértelmezett argumentum egy függvény argumentum , amely meghívásakor nem kötelező. A legtöbb programozási nyelvben a függvények egy vagy több argumentumot vehetnek fel. Általános szabály, hogy minden argumentumot teljes mértékben meg kell adni (mint a C programozási nyelvben [1] ). Később egyes nyelvek (például a C++ ) lehetővé tették a programozó számára, hogy megadja néhány argumentum értékét a függvény deklarációjában. Így a függvény csak a szükséges argumentumok átadásával hívható meg.

Alapértelmezett argumentumok a C++-ban

Tekintsük a következő függvény deklarációt:

int my_func ( int a , int b , int c = 12 );

Ennek a függvénynek három argumentuma van, amelyek közül az utolsó alapértelmezett értéke 12. A programozó kétféleképpen hívhatja meg ezt a függvényt:

eredmény = my_func ( 1 , 2 , 3 ); eredmény = my_func ( 1 , 2 );

Az első esetben a c argumentum értéke a függvényhívásban van meghatározva, és egyenlő hárommal. A második esetben az utolsó argumentum kimarad, és c értéke tizenkettő lesz .

Az alapértelmezett argumentumok beállítása az utolsó argumentumtól kezdve.

A virtuális metódusok alapértelmezett argumentumértékeit futási időben nem az objektum típusa határozza meg, hanem a mutató típusa határozza meg. Ebben a példában a konzol képernyőjén ez jelenik meg 1 Derived:

osztályú Bázis { public : virtual void foo ( int x = 1 ) { std :: cout << x << "Alap" ; } }; osztály Származtatott : nyilvános Bázis { public : void foo ( int x = 2 ) override { std :: cout << x << "Származtatott" ; } }; int main () { Alap * x = new Származtatott ; x -> foo (); // "1 származtatott" return 0 ; }

A tagfüggvényeknél az alapértelmezett argumentumértékek adhatók meg a definíciókban. Az ilyen függvények csak akkor hívhatók meg alapértelmezett értékekkel, ha definíciójuk a hívás előtt történik. Példa :

struct C { void g ( int i , int j = 99 ); C ( int a ); }; C :: C ( int = 5 ) { } void C :: g ( int i = 88 , int j ) { }

Túlterhelt metódusok

Néhány más nyelv, például a Java , nem támogatja az alapértelmezett argumentumokat. Ez a viselkedés azonban reprodukálható az azonos nevű és kevesebb argumentumú metódus túlterhelésével :

int MyFunc ( int a , int b ) { return MyFunc ( a , b , 12 ); } int MyFunc ( int a , int b , int c ) { /* fő megvalósítás */ }

Értékelés

Minden függvényhíváshoz az alapértelmezett argumentumértékeket át kell adni a meghívott függvénynek. Ez ismétlődéshez vezet a kódban. Ennek elkerülése érdekében az alapértelmezett argumentumokat meg kell szüntetni.

Ha az alapértelmezett argumentum nem csak egy literál, hanem egy kifejezés, akkor ez a kifejezés egyszer kiértékelhető a teljes programra vonatkozóan.

A Python arról nevezetes, hogy az alapértelmezett argumentumokban lévő kifejezéseket csak egyszer, a modul betöltése során értékeli ki. Ha minden függvényhívásban értéket szeretne kiértékelni, akkor az argumentumhoz jelértéket rendelhet (például NonePythonban), majd a függvény első sorában jelölje be.

Például a Python alapértelmezett argumentumai a következőképpen valósíthatók meg:

import datetime def f ( a , b = Nincs ): b = b vagy datetime . dátumidő . most ()

Linkek

  1. Alapértelmezett paraméterek . Hozzáférés dátuma: 2012. január 13. Az eredetiből archiválva : 2011. október 9..