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?
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")
{
}
Hupsz a:
#include <string>
lemaradt, de a lényeg az változatlan. ;)
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.
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.
Én inkább arra lettem volna kiváncsi, hogy ezt szabad-e:
valami(short, int b = 0);
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!