Kezdőoldal » Számítástechnika » Programozás » Ezt, hogyan kell C++ ban?

Ezt, hogyan kell C++ ban?

Figyelt kérdés

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.*/


2012. márc. 22. 21:12
 1/8 A kérdező kommentje:
Úgy értem,hogy két operator++ szeretnék amit egy objektum használ.
2012. márc. 22. 21:38
 2/8 A kérdező kommentje:
Nem tudom jobban megfogalmazni írjatok léci.
2012. márc. 22. 23:28
 3/8 iostream ***** válasza:

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.

2012. márc. 23. 09:51
Hasznos számodra ez a válasz?
 4/8 anonim ***** válasza:

itt van amit kersel:

[link]

de tenleg kulon fugvenyt kene irjal a ketore

2012. márc. 23. 14:22
Hasznos számodra ez a válasz?
 5/8 A kérdező kommentje:

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?

2012. márc. 23. 16:13
 6/8 iostream ***** válasza:

Hát nézd.

++obj;

Ennyit tud a fordító. Ebből hogy mondja meg, hogy te melyiket gondoltad?

2012. márc. 23. 16:15
Hasznos számodra ez a válasz?
 7/8 A kérdező kommentje:

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?

2012. márc. 23. 16:43
 8/8 iostream ***** válasza:

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.

2012. márc. 23. 17:12
Hasznos számodra ez a válasz?

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

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!