Подтвердить что ты не робот

Зачем кому-то нужно перегружать оператор & (адрес)?

Возможный дубликат:
Какие законные причины существуют для перегрузки унарного оператора &?

Я просто прочитал этот вопрос, и я не могу не задаться вопросом:

Почему кто-то может захотеть перегрузить оператор & ( "адрес-из" )?

   some_class* operator&() const { return address_of_object; }

Есть ли законный вариант использования?

4b9b3361

Ответ 1

Если вы имеете дело с любыми объектами-оболочками, вам может понадобиться или нужно прозрачно перенаправить доступ к обертке содержащемуся объекту. В этом случае вы не можете вернуть указатель на оболочку, но вам нужно перегрузить оператор-адрес, чтобы вернуть указатель на содержащийся объект.

Ответ 2

Да, для отладки (если вы хотите отслеживать любой доступ или ссылку, вы можете поместить строку журнала при любом вызове &, * или ->).

Ответ 3

Потому что они злые и хотят, чтобы вы страдали.

Или я думаю, если вы используете прокси-объекты? Я полагаю, вы можете захотеть вернуть указатель на управляемый объект вместо контейнера, хотя я бы скорее сделал это с помощью функции getter. В противном случае вам придется не забывать использовать такие вещи, как boost::addressof.

Ответ 4

Я уже видел это в продуктивном коде.

Но там было возвращено двоичное представление содержимого a struct, а не только 0.

И усеказа была простой: двоичные операции.