Зачем кому-то хотеть перегружать оператор & (address-of)?

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

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

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

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

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

4 ответа

Решение

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

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

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

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

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

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

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

Другие вопросы по тегам