Raspuns: Din cauza ca operatorii ++ si -- pot avea atat forma prefix cat si postfix, exista doua semnaturi pentru operatorul ++, respectiv --: una fara parametru, si una care ia un parametru de tip int ce este ignorat.
Code: Select all
class foo
{
public:
foo& operator++ (); // prefix ++
foo operator++ (int); // postfix ++
};
Code: Select all
foo& foo::operator++ ()
{
// incrementeaza obiect
return *this;
}
foo foo::operator++ (int)
{
foo temp = *this;
++(*this);
return temp;
}
In aceste conditii se poate scrie:
Code: Select all
foo f1;
foo f2 = ++f1; // f2 contine valoarea incrementata a lui f1
foo f3 = f1++; // f2 contine valoarea anterioara a lui f1
Code: Select all
class foo
{
public:
foo& operator++ (); // prefix ++
void operator++ (int); // postfix ++
};
Code: Select all
void foo::operator++ (int)
{
++(*this);
}
Code: Select all
foo f1;
foo f3 = f1++; // EROARE: operatorul++ postfix nu returneaza nimic
Next FAQ >>