c++ - not - operator in c
c++ obtener la dirección de la variable sin operador & (2)
Desde C ++ 11, puede usar la función std::addressof
Tengo una clase que ha sobrecargado el operator&
unario operator&
. Los objetos de ese tipo se crearon utilizando new
, por lo que la dirección de la variable era accesible, pero ahora necesito usar un objeto estático. ¿Es posible obtener su dirección?
En C ++ 11 o posterior, std::addressof(object)
, declarado por el encabezado <memory>
.
Históricamente, era más grotesco, especialmente si quería lidiar con volatile
calificadores const
y volatile
correctamente. Una posibilidad utilizada por la implementación de la addressof
de addressof
es
reinterpret_cast<T*>(
&const_cast<char&>(
reinterpret_cast<const volatile char &>(object)))
primero agregando calificadores mientras se convertía a char&
para que reinterpret_cast
funcionara sin embargo el object
estaba calificado; luego quitándolos para que la conversión final funcione; finalmente tomando la dirección y convirtiéndola al tipo correcto. Siempre que T
tenga los mismos calificadores que el object
(que lo hará como un parámetro de plantilla deducido del object
), el puntero resultante se calificará correctamente.