addressof — std::addressof
addressof — std::addressof
std::addressof는 객체의 실제 메모리 주소를 얻는 함수예요. operator&가 오버로드된 타입에서도 진짜 주소를 얻을 수 있게 해줘요.
보통 & 연산자로 주소를 얻지만, 사용자 정의 타입이 operator&를 오버로드하면 예상과 다른 값을 돌려줄 수 있어요. addressof는 연산자 오버로드와 무관하게 진짜 메모리 주소를 보장해줘요.
출처: cppreference
본문
addressof는 operator&를 오버로드한 클래스 타입에서도 실제 주소를 얻기 위해 사용되는 함수 템플릿이에요.
template<class T>
T* addressof(T& r) noexcept;
r이 참조하는 객체의 실제 주소를 반환해요. operator&가 오버로드되어 있어도, 그 연산자와 무관하게 객체의 진짜 메모리 주소를 돌려주는 것이 핵심이에요.
이 함수는 std::vector, std::shared_ptr, 알고리즘 등 표준 라이브러리 내부에서도 광범위하게 사용돼요. 특히 "주소를 취하는 것"이 의미적으로 중요한 코드에서 & 대신 addressof를 쓰는 게 안전해요.
같이 보기
to_address