C++/Przeciążanie operatorów: Różnice pomiędzy wersjami

Usunięta treść Dodana treść
Linia 384:
delete przykladNormalnosci;
}
</source>
 
Znając cel tego operatora nie mamy przeszkód zdefiniować go ciut inaczej niż są założenia:
 
<source lang="cpp">
#include <iostream>
using namespace std;
 
class A
{
public:
void operator->*(int a)
{
cout << "Podano liczbe: " << a << endl;
}
};
 
int main()
{
A a;
a->*4;
}
// wydruk będzie taki: Podano liczbe: 4
</source>
 
Możemy też skomplikować w jeszcze inny sposób:
 
<source lang="cpp">
#include <iostream>
using namespace std;
 
class Niezdecydowana
{
public:
int (Niezdecydowana::*niezdecydowanaFunkcja)(int i);
int operator->*(int i)
{
cout << "Wywoluje operator ->*\t";
return (this->*niezdecydowanaFunkcja)(i);
}
int razy2(int i)
{
return i*2;
}
int razy3(int i)
{
return i*3;
}
};
 
int main()
{
Niezdecydowana niezdecydowana;
niezdecydowana.niezdecydowanaFunkcja = &Niezdecydowana::razy3;
cout << "Wynik niezdecydowania: " << (niezdecydowana->*3) << endl;
}
// wydruk będzie: Wywoluje operator ->* Wynik niezdecydowania: 9
</source>