Kezdőoldal » Számítástechnika » Programozás » C++ konstruktor esetén a...

C++ konstruktor esetén a default paramétert a deklarációban és a kifejtésben is meg kell adni, vagy elhagyható egyik vagy másik helyről?

Figyelt kérdés

2012. jún. 27. 19:21
1 2
 1/12 anonim ***** válasza:
Mi az a default paraméter?
2012. jún. 27. 19:59
Hasznos számodra ez a válasz?
 2/12 anonim ***** válasza:

A definícióba kell. A prototípusba / deklarációba / szignatúrába nem kell. Mert mint adott a header fájlokban szignatúrákat kell írnod csak és az implementációt(definíciót) a cpp fájlban adod meg.


A szignatúráknál olyannyira elhagyható a default value, hogy még a paraméterek változóinak sem kell nevet adni.

pl.:

Ez egy helyes header file:

#ifndef _TEST_H

#define _TEST_H


class test

{

public:

test(int, char, string);

};

#endif


A hozzátartozó cpp:

test::test(int i, char a = '\0', string = "asdf")

{


}

2012. jún. 27. 20:00
Hasznos számodra ez a válasz?
 3/12 anonim ***** válasza:

Hupsz a:

#include <string>

lemaradt, de a lényeg az változatlan. ;)

2012. jún. 27. 20:05
Hasznos számodra ez a válasz?
 4/12 iostream ***** válasza:

Jézusom. Gyerekek. Egyrészt miért beszéltek hülyeséget (első nem tudja, mi az a default paraméter, második nettó baromságot beszél, és még meg is indokolja), másrészt kérdező, PRÓBÁLD KI. A fordító nem fog panaszkodni, hogy már megint hibás kódot kell fordítania. Megszokta, a fordítók az idő nagy részében hibás kódon dolgoznak.


De ha lusta vagy kipróbálni, akkor elárulom, hogy csak a deklarációba kell a default paraméter default értékét megadni, sőt, pontosan ott kell, a kifejtésben tilos.


Annyira jó arc vagyok, hogy meg is indoklom, miért. Azért, mert a default paraméter egy fordítási idejű dolog. Tehát annak a kódnak, ami meghívja a függvényt, tudnia KELL, hogy hol van lehetőség default paramétert átadni.

2012. jún. 27. 22:55
Hasznos számodra ez a válasz?
 5/12 A kérdező kommentje:
Akkor most kinek van igaza? Az tényleg úgy van, hogy a deklarációban nem kell a változóknak nevet adni, akkor viszont hogy lehet a default paramétert megadni?
2012. jún. 28. 08:13
 6/12 _Jessy_ ***** válasza:

iostream írta jól. Egyébként valahogy így lehet:


valami(short, int = 0);


valami::valami(short s, int i){


}


de ha ezt írod:


valami(short a, int b = 0);


valami::valami(short s, int i){


}


a fordítót az sem akasztja ki. A függvények azonosítását nem befolyásolja az, hogy mi a neve az átadott paramétereknek, csak a típusa számít.

2012. jún. 28. 09:29
Hasznos számodra ez a válasz?
 7/12 A kérdező kommentje:

Én inkább arra lettem volna kiváncsi, hogy ezt szabad-e:


valami(short, int b = 0);

2012. jún. 28. 10:42
 8/12 iostream ***** válasza:
igen, szabad. A parametereknek nem kotelezo nevet adni, sot, ezzel segitesz a forditonak.
2012. jún. 28. 11:07
Hasznos számodra ez a válasz?
 9/12 A kérdező kommentje:
És egy paraméter neve (akár a deklarációban, akár a definicióban) megegyezhet egy függvény nevével, vagy az osztály nevével?
2012. jún. 28. 11:16
 10/12 iostream ***** válasza:
Természetesen az azonosítóknak egyedinek kell lenniük egy névtéren belül, így nem, nem egyezhet meg ilyesmivel.
2012. jún. 28. 12:12
Hasznos számodra ez a válasz?
1 2

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!