Kezdőoldal » Számítástechnika » Programozás » Miért ír warning-ot az 57 dik...

Miért ír warning-ot az 57 dik sorban? //C++

Figyelt kérdés

//main.cpp

# include <iostream>

# include <stdlib.h>


typedef unsigned short ushort;

typedef unsigned int uint;


using std::cout;

using std::cin;

using std::endl;



class Counter

{

public:

Counter(int x); //Konstruktor

Counter(const Counter &); //Másoló konstruktor

~Counter(); //Destruktor


void increment(); //increment

const Counter& operator++ (); //prefix

const Counter operator++ (int); //postfix


void SetVal(int x); //SetVal

int GetVal()const; //GetVal

private:

int *itsVal;

};


//konst,copy konst,destr,

Counter::Counter(int x):

itsVal(new int(x))

{cout <<"Konstruktor \n";}


Counter::Counter(const Counter &rhs)

{

cout <<"Copy konstruktor \n";

itsVal = new int;

*itsVal = rhs.GetVal();

}


Counter::~Counter()

{

cout <<"Destruktor \n";

delete itsVal;

itsVal = NULL;

}

//operator++

const Counter& Counter::operator++ ()

{

++*itsVal;

return *this;

}


const Counter Counter::operator++ (int)

{

*itsVal++; //ez a 57-dik sor.

return *this;

}

//Metódus

void Counter::SetVal(int x)

{*itsVal = x;}


int Counter::GetVal()const

{return *itsVal;}


void Counter::increment()

{++*itsVal;}



//main kezdõdik

int main()

{

Counter i(1);

cout <<"i erteke: "<< i.GetVal() << endl;

++i;

cout <<"i erteke: "<< i.GetVal() << endl;



return EXIT_SUCCESS;

}


//C:\Users\ALWAYS_WINS\Desktop\Code Blocks mentesek\Practice_5\main.cpp|57|warning: value computed is not used [-Wunused-value]|


2012. márc. 20. 17:40
 1/3 A kérdező kommentje:

Azt mondjátok meg,hogy az operator++ (int) függvényben miért nem lehet így *itsval++; ha így csinálom akkor warningot ír.


Miért kell így lennie ++*itsVal; ha postfix-ről van szó?

Hát nem volna egyértelműbb ha így írnám:*itsVal++;

2012. márc. 20. 18:07
 2/3 iostream ***** válasza:

Kis fejtágítás.

A prefix ++ operátor azt csinálja, hogy megnöveli a változó értékét, a kifejezés értéke pedig az új érték lesz.

A postfix ++ operátor pedig megnöveli a változó értékét, és a RÉGI érték lesz a kifejezés értéke. Azaz itt KÉT értéked létezik egyszerre, az új a változóban, és a régi egy átmeneti változóban, míg az elsőnél (a prefixnél) nincs temporális.


Tehát létrejön egy int, amit nem használsz, erre jön a warning.

2012. márc. 20. 20:11
Hasznos számodra ez a válasz?
 3/3 iostream ***** válasza:
Azaz a te implementációd nem felel meg a postfix operátortól elvárt működésnek.
2012. márc. 20. 20:12
Hasznos számodra ez a válasz?

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!