Теперь, если у вас есть
O object;
object->whatever()
сначала будет вызван перегруженный operator->
, который вернет ses
сохраненный внутри объекта, затем для возвращенного указателя будет снова вызван operator->
(встроенный в случае S*
).
So
object->whatever();
эквивалентно псевдокоду:
object.ses->whatever();
последнее было бы, конечно, невозможно, поскольку O::ses
- это private
- поэтому я называю это псевдокодом .
С такой перегрузкой вы можете создать оболочку вокруг указателя - такую оболочку обычно называют smart pointer .