Зачем кому-то хотеть перегружать оператор & (address-of)?
Возможный дубликат:
Какие существуют законные причины для перегрузки унарного оператора &?
Я только что прочитал этот вопрос, и я не могу не удивляться:
Почему кто-то хочет перегружать &
оператор (адрес)?
some_class * operator & () const {return address_of_object; }
Есть ли законный вариант использования?
4 ответа
Если вы имеете дело с какими-либо объектами-обертками, вам может потребоваться или вам необходимо прозрачно перенаправить доступ к обертке на содержащийся объект. В этом случае вы не можете вернуть указатель на оболочку, но вам нужно перегрузить оператор address-of, чтобы вернуть указатель на содержащийся объект.
Потому что они злые и хотят, чтобы ты страдал.
Или я думаю, если вы используете прокси-объекты? Я полагаю, вы можете захотеть вернуть указатель на управляемый объект вместо контейнера - хотя я бы лучше сделал это с помощью функции getter. В противном случае вы должны помнить, чтобы использовать такие вещи, как boost::addressof
,
Да, для отладки (если вы хотите отследить какой-либо доступ или ссылку, вы можете захотеть поместить строку журнала в любой вызов &
, *
или же ->
).
Я видел это уже в продуктивном коде.
Но там, двоичное представление содержимого struct
был возвращен, а не только 0
,
И случай использования был прост: бинарные операции.