C++/Przeciążanie operatorów: Różnice pomiędzy wersjami
Usunięta treść Dodana treść
→Rzadko przeciążany operator ->*: - przyklady |
|||
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>
|