Addressof
Назначение
Идиома Addressof используется для получения адреса объекта. Она позволяет получить фактический адрес, где данные хранятся в памяти компьютера. Затем этот адрес может быть использован для различных целей, например, для передачи в функцию, сохранения в указатель или создания ссылки.
Решаемые задачи
Нахождение реального адреса объекта в памяти
C++ позволяет перегружать унарный оператор амперсанда (&) для типов классов. Тип возврата такого оператора не обязательно должен быть фактическим адресом объекта. Идиома addressof позволяет найти реальный адрес объекта независимо от перегруженного унарного оператора амперсанда и его защиты доступа.
Общая реализация на языке C++
template<class T>
T *addressof(T &v)
{
return reinterpret_cast<T *> (&const_cast<char &> (reinterpret_cast <const volatile char &> (v)));
}
int main()
{
nonaddressable na;
nonaddressable *naptr = addressof(na);
return 0;
}
Last updated
Was this helpful?