Npisałem sobie taką klasę i chciałem pracować na niej jak na wskaźniku ale nie rozumiem dlaczego musiałem przeładować** operator* skoro w operator <<<** wyłuskuje wartość.
Wiem tylko, że wtedy kompilator nie wiedziałby jak się zachować przy tej linijce.
cout <<*b1 << endl
metodą prób i błedów jakoś udało mi się przeładować ten operator ale nie rozumiem dlaczego to działa.
#include <iostream>
using namespace std;
class Pointer{
int* wsk;
public:
Pointer():wsk(new int){}
Pointer(const Pointer& ob):wsk(new int(*ob.wsk)){}
Pointer& operator=(const Pointer& ob)
{
if(this!=&ob)
{
delete wsk;
wsk = new int(*ob.wsk);
}
return *this;
}
friend ostream& operator<<(ostream& out,const Pointer& ob)
{
return out << *ob.wsk;
}
int operator*()
{
return *wsk;
}
};
int main()
{
Pointer b1;
cout <<*b1 << endl;
return 0;
}