Unique Pointer

Programming/C++ Language 2014. 3. 3. 14:59



Related


template <class T>

class rv

{

    T& r_;


public:

    explicit rv(T& r) : r_(r) {}

    T* operator->() {return &r_;}

    T& operator*() {return r_;}

};


template

rv<int> intRV; 와 같이 <> 안에 자료형을 넣어 T를 해당 자료형으로 변환 시켜준다.


explicit

class 생성자의 묵시적 호출을 방지하는 키워드.

int a;

rv<int> classRV = a;

위와 같이 호출을 하였을 때, 컴파일러가 암묵적으로 classRV(a) 를 호출해주는 것을 방지한다. 이로인해 의도치 않은 동작을 방지 할 수 있다.

생성자를 호출하기 위해서는 반듯이 rv<int> classRV(a) 와 같이 호출이 되어야 한다.



typename


typedef typename add_reference<deleter_type>::type deleter_reference;


typedef 는 기존 정의된 자료형사용자 정의 자료형으로 이름을 부여할 때 사용한다.

따라소 자료형 만이 다음에 올 수가 있는데, 위의 코드에서는 add_reference<deleter_type>::type 이 있는데 이는 변수가 될 수도 있고 자료형이 될 수도 있다. 따라서 컴파일러에게 혼돈을 주게되므로, 컴파일러에게 ~::type 은 자료형이라는 것을 알려주기 위해 사용하는 키워드이다.

'Programming > C++ Language' 카테고리의 다른 글

warning 에 대하여  (0) 2015.01.07
typeid 키워드  (0) 2014.04.15
[C++] 동적바인딩( Dynamic binding )  (0) 2011.01.03
[C++] this 포인터 사용하기  (0) 2010.07.31
[C++] 참조 변수  (1) 2010.07.31

설정

트랙백

댓글