Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Molim objasnite mi gdje se nalazi zastavica (x)

[es] :: C/C++ programiranje :: C/C++ za početnike :: Molim objasnite mi gdje se nalazi zastavica (x)

[ Pregleda: 2556 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Xarios

Član broj: 127199
Poruke: 118
*.tel.net.ba.



+1 Profil

icon Molim objasnite mi gdje se nalazi zastavica (x)31.12.2007. u 16:48 - pre 198 meseci
Prefix and postfix operators.
Code:

1:     // Listing 10.12
2:     // Returning the dereferenced this pointer
3:     
4:     #include <iostream.h>
5:     typedef unsigned short  USHORT;
6:
7:     class Counter
8:     {
9:     public:
10:       Counter();
11:       ~Counter(){}
12:       USHORT GetItsVal()const { return itsVal; }
13:       void SetItsVal(USHORT x) {itsVal = x; }
14:       const Counter& operator++ ();      // prefix
15:       const Counter operator++ (int); // postfix
16:
17:    private:
18:       USHORT itsVal;
19:    };
20:
21:    Counter::Counter():
22:    itsVal(0)
23:    {}
24:
25:    const Counter& Counter::operator++()
26:    {
27:       ++itsVal;
28:       return *this;
29:    }
30:
31:    const Counter Counter::operator++(int)
32:    {
33:       Counter temp(*this);
34:       ++itsVal;
35:       return temp;
36:    }
37:
38:    int main()
39:    {
40:       Counter i;
41:       cout << "The value of i is " << i.GetItsVal() << endl;
42:       i++;
43:       cout << "The value of i is " << i.GetItsVal() << endl;
44:       ++i;
45:       cout << "The value of i is " << i.GetItsVal() << endl;
46:       Counter a = ++i;
47:       cout << "The value of a: " << a.GetItsVal();
48:       cout << " and i: " << i.GetItsVal() << endl;
49:       a = i++;
50:       cout << "The value of a: " << a.GetItsVal();
51:       cout << " and i: " << i.GetItsVal() << endl;
52:     return 0;
53: }

Output: The value of i is 0
The value of i is 1
The value of i is 2
The value of a: 3 and i: 3
The value of a: 3 and i: 4

Analysis: The postfix operator is declared on line 15 and implemented on lines 31-36. Note that the call to the prefix operator on line 14 does not include the flag integer (x), but is used with its normal syntax. The postfix operator uses a flag value (x) to signal that it is the postfix and not the prefix. The flag value (x) is never used, however.

NIJE MI JASNO, zasto kaze da postfiksni operator koristi zastavicu (x) kad zadnja recenica kaze nikada se ne koristi?
I gdje je ta uopce zastavica u ovom KOD-u?
I ovaj dio KOD-a se nikako ne koristi izgleda: void SetItsVal(USHORT x) {itsVal = x; } ???

Unaprijed hvala na vasem odgovoru!
 
Odgovor na temu

virtualVoid

Član broj: 161084
Poruke: 698



+28 Profil

icon Re: Molim objasnite mi gdje se nalazi zastavica (x)31.12.2007. u 17:13 - pre 198 meseci
Posto funkcija operator() ne zna sta je pre- a sta postfiks, mi njoj signaliziramo 2 stvari:
1. ako ne koristimo parametre, onda ona zna da se radi o prefiksnom operatoru++, npr.
Code:
int operator++()

2. ako koristimo parametar int bez navodjenja imena tog integera, onda funkcija zna da se radi o postfiksnom operatoru++, npr.
Code:
int operator++(int);


Ovaj integer se nikada nece koristiti i njegova JEDINA namjera je da funkciji operator() dignalizira da se radi o postfiksnom operatoru.

NAdam se da je pomoglo .
...
 
Odgovor na temu

Xarios

Član broj: 127199
Poruke: 118
*.tel.net.ba.



+1 Profil

icon Re: Molim objasnite mi gdje se nalazi zastavica (x)31.12.2007. u 17:25 - pre 198 meseci
Hvala na brzom i tacnom odgovoru.

Kazem tacnom jer sam to vec znao, i pretpostavljao sam da je int zastavica.

Ali mi nije jasno zasto pise (x) jel se tako uobicajeno pise zastavica jer x nema nigdje drugo u KODU-u osim u onoj funkciji clanici void SetItsVal.

Pa moje pitanje pono glasi gdje se nalazi to famozno x koje su stavili u zagradi (x).

I jeli int zastavica, a ne taj x?!
 
Odgovor na temu

kiklop74
Darko Miletić
Buenos Aires

Član broj: 78422
Poruke: 569
*.fibertel.com.ar.

Sajt: ar.linkedin.com/pub/darko..


+13 Profil

icon Re: Molim objasnite mi gdje se nalazi zastavica (x)02.01.2008. u 22:22 - pre 198 meseci
Zamalo se ne udavih od smeha :) :) "zastavica" :) :)

Elem stvar je vrlo jednostavna. Operator prefix/postfix koriste identičan simbol (++) Tako da kada bi ih deklarisali kako se deklarišu ostali operatori:

Code:
class Z
   {
   public: 
      Z operator++ ();    // Prefix
      Z operator++ ();    // Postfix (??!!)
   };


Ne postoji način da kompajler razlikuje koji je koji. Stoga je uvedeno pravilo da se postfiksni operator uvek deklariše sa ulaznim parametrom int. Parametar služi samo da bi rekao kompajleru - hej ovo je postfiksni operator.

Code:
class Z
   {
   public: 
      Z operator++ ();    // Prefix
      Z operator++ (int); // Postfix
   };



Tko leti vrijedi
 
Odgovor na temu

virtualVoid

Član broj: 161084
Poruke: 698



+28 Profil

icon Re: Molim objasnite mi gdje se nalazi zastavica (x)03.01.2008. u 09:30 - pre 198 meseci
@kiklop74
Bas me zanima sta si mu to ti rekao a da ja nisam? Ne vidim smisla ponavljati se ;)
...
 
Odgovor na temu

kiklop74
Darko Miletić
Buenos Aires

Član broj: 78422
Poruke: 569
*.fibertel.com.ar.

Sajt: ar.linkedin.com/pub/darko..


+13 Profil

icon Re: Molim objasnite mi gdje se nalazi zastavica (x)04.01.2008. u 00:31 - pre 198 meseci
Što jes' jes' . Nije bilo svrhe ponavljati već rečeno ali nisam mogao da odolim da ne prokomentarišem "zastavicu" a posle sam dodao ostatak da ne ispadne da trolujem topic
Tko leti vrijedi
 
Odgovor na temu

Sephiroth?
Balkan @ net

Član broj: 79406
Poruke: 82
*.bi2.dlp334.bih.net.ba.



Profil

icon Re: Molim objasnite mi gdje se nalazi zastavica (x)04.01.2008. u 12:15 - pre 198 meseci
Malo offtopic, ali kako bi vi preveli rijec "flag" ? :) Da li uopste postoji prijevod u tehnickom zargonu?
1. Zastava
2. Zastavica
3. Zastavetina

Jes' smjesno, po meni se neke stvari ne bi trebale niti prevoditi, ali eto... Heh, sta bi bilo kad bi i Windows preveli? OS Prozori :P

@Xarios

Citat:

Ali mi nije jasno zasto pise (x) jel se tako uobicajeno pise zastavica jer x nema nigdje drugo u KODU-u osim u onoj funkciji clanici void SetItsVal.

Pa moje pitanje pono glasi gdje se nalazi to famozno x koje su stavili u zagradi (x).

I jeli int zastavica, a ne taj x?!


Da, int je flag, to "x" nema veze sa ovim, potpuno si pobrkao. U SetItsVal(int x) moglo je pisati i int varijabla, nema to nikakve veze sa prefix i postfix operatorima inkrementacije.
 
Odgovor na temu

Xarios

Član broj: 127199
Poruke: 118
*.tel.net.ba.



+1 Profil

icon Re: Molim objasnite mi gdje se nalazi zastavica (x)04.01.2008. u 13:26 - pre 198 meseci
Hvala na odgovorima.

Mene je jedino bunilo: (x)
Zato sto je navedeno u knjizi c++ za 21 dan na izvornom jeziku (engleskom), procitajte text na engl. u mome prvom postu ove teme (ispod KODA) pa cete vidjeti da pise (x). Inace kad ucim programiranje, zelim znati sve detalje pa me je zainteresiralo sta znaci ovo (x) i u kakvom je odnosu s necim iako sam sam pretpostavio da nema smisla u ovom primjeru to famozno (x) jer taj FLAG bolje bi pristajao uz INT nego (X).

PS: A taj prevod za flag jeste zastavica, ima malo smisla jer ipak signalizira da li se radi o prefix ili postfix operatoru.
Znate i sami npr. da se zastavice koriste u realnom svijetu da se nesto ili necemu signalizira.
 
Odgovor na temu

kiklop74
Darko Miletić
Buenos Aires

Član broj: 78422
Poruke: 569
200.49.157.*

Sajt: ar.linkedin.com/pub/darko..


+13 Profil

icon Re: Molim objasnite mi gdje se nalazi zastavica (x)04.01.2008. u 16:23 - pre 198 meseci
Citat:
Sephiroth?: Malo offtopic, ali kako bi vi preveli rijec "flag" ? :) Da li uopste postoji prijevod u tehnickom zargonu?
1. Zastava
2. Zastavica
3. Zastavetina

Jes' smjesno, po meni se neke stvari ne bi trebale niti prevoditi, ali eto... Heh, sta bi bilo kad bi i Windows preveli? OS Prozori :P


Striktan prevod sa engleskog bi bio zastava ali u programerskom žargonu ovo se generalno ne prevodi (mada će mnogi prevodioci i spisatelji računarskih knjiga da se bune). Flag je flag, pointer je pointer, debugger je debugger, JIT debugger je JIT debugger (a ne pravovremeni detektor grešaka kako je svojevremeno preveden u jednoj knjizi objavljenoj u Srbiji).




Tko leti vrijedi
 
Odgovor na temu

[es] :: C/C++ programiranje :: C/C++ za početnike :: Molim objasnite mi gdje se nalazi zastavica (x)

[ Pregleda: 2556 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.