-
카테고리
-
세부 분야
게임 프로그래밍
-
해결 여부
해결됨
nullptr 자체 구현 과정에 대하여 질문이 있습니다.
23.03.20 15:47 작성 조회수 1.14k
1
안녕하세요.
nullptr 수업 중 알려주신
"nullptr 자체 구현 과정"에 대하여 질문이 있습니다.
#include <iostream>
using namespace std;
#include <vector>
#include <list>
#include <deque>
#include <map>
#include <set>
#include <algorithm>
void Test(void* ptr)
{
cout << "Test(*)" << endl;
}
class NullPrt
{
public:
// 그 어떤 타입의 포인터와도 치환 가능
template<typename T>
operator T* ()const
{
return 0;
}
// 그 어떤 타입의 멤버 포인터와도 치환 가능
template<typename C, typename T>
operator T C::* () const
{
return 0;
}
private:
void operator&() const; // 주소값 &을 막는다.
};
const NullPrt _NullPtr;
int main()
{
Test(_NullPtr);
return 0;
}
위와 같은 코드에서
Test(_NullPtr);
를 실행하면,
왜 NullPtr의
template<typename T>
operator T* ()const
{
return 0;
}
로 진입하는 지에 대하여 조금만 더 자세히 설명해주실 수있을까요?
Test 함수로 _NullPtr 객체를 보내주는데,
왜 operator T* () const로 진입하지는 약간 이해가 되지 않습니다.
혹시 관련하여 참고할만한 구글링 키워드를 알려주셔도 좋습니다. ^^
항상 잘 배우고 있습니다.
감사합니다.
답변을 작성해보세요.
2
Rookiss
지식공유자2023.03.20
잘 안 쓰이지만, Conversion Operator를 template으로 만든 것입니다.
https://en.cppreference.com/w/cpp/language/cast_operator
즉 어떤 타입의 포인터라도, 변환이 일어난다면 해당 연산자로 타고 가겠죠.
답변 1