Namespaces
Variants

std::unique_ptr<T,Deleter>:: operator*, std::unique_ptr<T,Deleter>:: operator->

From cppreference.net
Memory management library
( exposition only* )
Allocators
Uninitialized memory algorithms
Constrained uninitialized memory algorithms
Memory resources
Uninitialized storage (until C++20)
( until C++20* )
( until C++20* )
( until C++20* )

Garbage collector support (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
typename std:: add_lvalue_reference < T > :: type operator * ( ) const
noexcept ( noexcept ( * std:: declval < pointer > ( ) ) ) ;
(1) (C++11 이후)
(C++23부터 constexpr)
pointer operator - > ( ) const noexcept ;
(2) (C++11 이후)
(C++23부터 constexpr)

operator * operator - > * this 가 소유한 객체에 대한 접근을 제공합니다.

이러한 멤버 함수들은 단일 객체에 대해서만, 즉 기본 템플릿에 대해서만 unique_ptr 에 제공됩니다.

1) 만약 std :: reference_converts_from_temporary_v
< std:: add_lvalue_reference_t < T > ,
decltype ( * std:: declval < pointer > ( ) ) >
true 인 경우, 프로그램은 형식에 맞지 않습니다.
(C++23부터)

만약 get ( ) 가 널 포인터인 경우, 동작은 정의되지 않습니다.

목차

반환값

1) * this 가 소유한 객체를 반환하며, * get ( ) 와 동등합니다.
2) 이 객체가 소유한 객체에 대한 포인터를 반환합니다. * this , 즉 get ( ) 입니다.

예외

1) pointer 가 던지는 operator * 를 가지고 있을 경우 예외를 던질 수 있습니다.

참고 사항

std::add_lvalue_reference 의 사용 목적은 std:: unique_ptr < void > 의 인스턴스화를 가능하게 하기 위함입니다. C++에서 void & 는 허용되지 않지만, std:: add_lvalue_reference < void > void 를 생성하기 때문입니다. 자세한 내용은 LWG673 를 참조하십시오.

예제

#include <iostream>
#include <memory>
struct Foo
{
    void bar() { std::cout << "Foo::bar\n"; }
};
void f(const Foo&) 
{
    std::cout << "f(const Foo&)\n";
}
int main() 
{
    std::unique_ptr<Foo> ptr(new Foo);
    ptr->bar();
    f(*ptr);
}

출력:

Foo::bar
f(const Foo&)

결함 보고서

다음의 동작 변경 결함 보고서들은 이전에 발표된 C++ 표준에 소급 적용되었습니다.

DR 적용 대상 게시된 동작 올바른 동작
LWG 2762 C++11 operator * 가 잠재적으로 예외를 발생시킬 수 있음
심지어 * get ( ) 가 noexcept인 경우에도
조건부 예외 명세를
추가함
LWG 4148 C++23 operator * 가 댕글링 참조를 반환할 수 있음
element_type* Deleter::pointer 와 다른 경우
이 경우 프로그램은
ill-formed임

참고 항목

관리되는 객체에 대한 포인터를 반환합니다
(public member function)