글
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 |