Az érvek alapértelmezett funkció programozás C és C
C ++ segítségével rendelheti a paramétereket az alapértelmezett értékek a funkciót, ha a paraméter nincs a függvény hívásakor. Az alapértelmezett értékek a szintaktikailag hasonló módon változók inicializálása. Például, az alábbiakban nyilvánítják az f (), átlagos-schaya argumentum egész szám változó, amelynek értéke az alapértelmezett érték 1:
Most F () funkció lehet hivatkozni két módon, az alábbiak szerint:
f (10); // törli az átvételi érték
f (); // függvény az alapértelmezett érték
Az első esetben az az érv, én lesz állítva 10. A második esetben kapok az alapértelmezett érték 1.
alapértelmezett érveket C ++ lehetővé teszi a programozó, hogy írjon egy egyszerű kódot. Annak érdekében, hogy fedezze a különböző helyzetekben gyakran függvény tartalmaz több paramétert, mint amennyi szükséges, ha ez a legjellemzőbb használatát. Az alapértelmezett érvek, megadhatja csak az érveket, amelyek eltérnek az alapértelmezett értékeket kazh-Doy adott helyzetben.
Ahhoz, hogy jobban elképzelni az oka az alapértelmezett érveket, vegye figyelembe a következő gyakorlati példa. Ez tartalmazza az alábbi hasznos xyout () funkció:
// kiírja a húr pozícióban X, Y
void xyout (char * str, int x = 0, int y = 0)
if (! x) x = molekulája, ahol X ();
if (! y) = wherey ();
gotoxy (x, y);
cout <
Ez a funkció megjeleníti a húr által mutatott változó str, és ez a vonal kerül a képernyőre az x és y koordinátákat. Ha azonban sem a koordinátákat x vagy y nem egy rend-on, hogy a string pozícióban jelenik meg a képernyőn, amely megfelel a jelenlegi y értékét. (El lehet képzelni, hogy ez is egy továbbfejlesztett változata a minden kimenet () függvény). molekulája, ahol X funkció (), wherey () és gotoxy () vannak könyvtári funkciók Borland C ++. molekulája, ahol X () és wherey () visszaadja az aktuális értékét koordinátái x és y. Ezek jelenlegi koordinátái határozzák meg, ahol az adatok jelennek meg. gotoxy () függvény a kurzort egy pont a megadott x és y koordinátákat.
Az alábbi rövid program használatát mutatja xyout () függvényt.
#include
#include
void xyout (char * str, int x = 0, int y = 0)
if (! x) x = molekulája, ahol X ();
if (! y) = wherey ();
gotoxy (x, y);
cout <
int main ()
xyout ( "helló", 10, 10);
xyout ( "van");
xyout ( "l, mint a C + +", 40); // még a tizedik sorban
xyout ( "Ez az on line 11. \ n", 1, 11);
xyout ( "Ez következik a 12. sorban \ n");
xyout ( "Ez a következőképpen on line 13");
vissza 0;
>
Nézd meg közelről a hívás xyout () függvény a main () függvény. Ez a program megjeleníti az adatokat az alábbiak szerint. Mivel ez a program, bár néha hasznos, hogy meghatározza, hogy hol a képernyőn jelenítheti meg az adatokat, akkor gyakran csak tartani a kiadási ponton, ahol végzett a következtetés az előző adattartalommal. Az alapértelmezett érv lehetővé teszi, hogy ugyanazt a funkciót mindkét esetben, tehát van szükség híd két különálló feladat.
Példa xyout funkció O ()
szia Szeretem C ++
Ez 11 vonalon.
Ez következik a 12. sorban.
Ez következik a 13-as vonal.
Megjegyezzük, hogy a main () függvény és xyout () nevű három, kettő vagy egy-ment az érvelés. Abban az esetben, a hívást az egyik érv x és y által meghatározott alapértelmezett. Ha két argumentummal, y értékét az alapértelmezett beállítás. Azonban lehetetlen okozhat xyout () függvény az x értéke az alapértelmezett, és y értékét, az adott funkció hívást. Általában, ha egy funkció érveit vonalban vannak megfelelő paramétereket balról jobbra. Elvégre hívtuk a funkciót az érveket szállított HN a megfelelő paraméterben, a fennmaradó érvek vannak rendelve az alapértelmezett értékekre.
Amikor létrehoz egy függvényt, amely egy alapértelmezett argumentumértékeket kell a rendelet-HN csak egyszer, és abban a pillanatban, amikor a funkció első bejelentett a fájlban. Például, ha xyout () függvény definíciója után a függvény main (), az alapértelmezett érvek
Meg kell adni az prototípus xyout () függvény, de ezek az értékek már nem ismétli meghatározásában ryatsya xyout () függvényt. A következő program illusztrálja ezt:
#include
#include
void xyout (char * str, int x = 0, int y = 0)
int main ()
xyout ( "helló", 10, 10);
xyout ( "van");
xyout ( "L, mint a C ++", 40); // még a tizedik sorban
xyout ( "Ez az on line 11. \ n", 1, 11);
xyout ( "Ez következik a 12. sorban \ n");
xyout ( "Ez a következőképpen on line 13");
vissza 0;
>
/ * Mivel az alapértelmezett értékek az x és y már meg vannak határozva a prototípus xyout (), akkor nem lehet megismételni itt * /
void xyout (char * str, int x, int y)
if (! x) x = molekulája, ahol X ();
if (! y) = wherey ();
gotoxy (x, y);
cout <
Ha megpróbálja újra megadni ugyanazokat az alapértelmezett értékek meghatározásában xyout () függvény, a fordító hibát jelez, és nem is lefordítani a programot.
Bár az alapértelmezett érveket nem lehet felülbírálni a kazh Dai funkció túlterheltségét változata tartalmazhat új alapértelmezett érveket.
// hibás!
void xyout (int x = 0, int y = 0, char * str)
Alább látható egy másik hibás próbálkozás, hogy az alapértelmezett beállítás:
// hibás!
int f (int i, int J = 10, int k)
Miután elindult az alapértelmezett beállításokat, hogy a lista nem jelenik meg a paramétereket nem alapértékeket.
Ön is használja a beállításokat az alapértelmezett értékek a kivitelező az objektum. Példaként itt van egy új változata a sorban osztály konstruktor:
/ * A kivitelező az alapértelmezett érték * /
sorban :: sorban (int id = 0)
sloc = rloc = 0;
aki id =;
cout <<"Queue " <
létrehoz két tárgy - a és b. Objektum azonosítója érték a értéke 0, és a tárgy b értéke 2.