Ezt, hogyan kell C++ ban?
Van egy Counter osztályom ennek az osztálynak van 1 darab operator függvénye és 2 darab tagváltozója.
Például:
Class Counter
{
public:
const Counter operator++ () {++itsVal;++itsAge;return *this;}
int GetVal()const {return itsVal;}
int GetAge()const {return itsAge;}
private:
int itsVal;
int itsAge;
};
int main()
{
Counter i;
cout << i.GetVal << endl;
cout << i.GetAge << endl;
i++ /*Itt növelem a változók értékét de én csak az itsAge változót akarnám növelni.De bele írtam az operator++ függvénybe az itsVal változót is mert azt is növelni szeretném majd az operator++ segítségével.
Hogyan oldható meg,hogy 2 prefix operator++ írjak az egyik a itsAge növelné a másik pedig az itsVal -t.*/





2 prefix operator++. Tegyük fel, hogy valahogy írsz kettőt. Hogy mondaná meg a fordító, hogy te melyiket akarod meghívni?
Itt már kezded elveszíteni az intuitivitást. Operátort túlterhelni akkor érdemes, ha a működése intuitív. Itt már nem egyértelmű, hogy a ++ mit is jelentene. Inkább írj egy IncrementAge() és IncrementVal() függvényt. Egyértelműbb.





Akkor lehetetlen két operator++ prefix függvényt írni?
Mert nem tudna a fordító különbséget tenni köztük?
class A
{
public:
const A operator++ () //pre.Ezzel akarnám az itsAge növelni.
const A operator++() //pre.Ezzel meg az itsValue változót.
private:
int itsAge;
int itsValue;
};
Lehetetlen megoldani?Muszáj increment függvényt írni?





Hát nézd.
++obj;
Ennyit tud a fordító. Ebből hogy mondja meg, hogy te melyiket gondoltad?
Akkor bővebben valaki ki tudná fejteni,hogy mikor használjuk őket.
Mert teljesen feleslegesek ha lehet increment függvényt írni.
Minek egy darab váltózó növelése miatt operator++ írni?
Szerintem átláthatóbb egy kód ha increment függvényt írunk.
De én szeretném használni az operator túlterhelést de mikor kell?





Például ha használni szeretnéd a sort() függvényt, az alapból az operator<-t hívja meg.
Vagy ha a típusod valamiféle számot valósít meg, aminek van egy jól meghatározható értéke (emellett lehetnek még változói, de egy értéke van), ott a ++ értelmes.
Vagy ha valami speckó tömböt csinálsz akkor kényelmes lehet az operator[] túlterhelése.
Vagy ha funktor objektumot készítesz, akkor az operator()-t kell túlterhelni, hogy az objektumod "meghívható" legyen.
Smart pointereknél a -> és a * (dereferálás) operátorokat kell túlterhelni.
További kérdések:
Minden jog fenntartva © 2025, 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!