statement operator not and c++ memory memory-management addressof

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.