inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문

enum class

nullptr 자체 구현 과정에 대하여 질문이 있습니다.

해결된 질문

1247

JDY

작성한 질문수 3

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로 진입하지는 약간 이해가 되지 않습니다.

 

혹시 관련하여 참고할만한 구글링 키워드를 알려주셔도 좋습니다. ^^

항상 잘 배우고 있습니다.

감사합니다.

c++

답변 1

2

Rookiss

잘 안 쓰이지만, Conversion Operator를 template으로 만든 것입니다.
https://en.cppreference.com/w/cpp/language/cast_operator

즉 어떤 타입의 포인터라도, 변환이 일어난다면 해당 연산자로 타고 가겠죠.

0

JDY

아 넵 설명과 링크 감사합니다!!! ^^

참고하여 이해할 수 있도록 하겠습니다.

소스코드와 관련하여 질문드립니다

0

70

1

map 컨테이너의 emplace 함수에 대해

0

115

2

시작이 안되네요...!

0

99

2

EAX 명령어 실행 시 RAX의 상위 32비트가 초기화 되는 이유

0

127

1

리틀 엔디안 장점 질문합니다.

0

131

1

메모리 창에 주소를 넣었는데 영어 꺠짐

0

125

1

타입변환#2 build시 knight 인접 stack이 침범당했다는 error가 발생합니다.

0

94

2

map #1 8분 58초 맵은 레드블랙트리로 이루어진 것 같습니다.

1

142

2

hello world 부터 오류 ㅠㅜ

0

191

1

지역변수가 스택? 레지스터

0

132

2

마지막 문제 질문드립니다.

0

165

2

메모리창이 비활성화됩니다.

0

98

1

이중포인터 강좌 부분 질문있습니다.

0

146

1

2를 더하는 이유

0

133

1

메모리 주소 창 엔디안 질문 드립니다. 인프런 봇 답변도 괜찮습니다

1

111

1

해당 코드는 왜 오류가 날까요?

0

156

1

마지막 문제 질문 있습니다.

0

119

1

강의 마지막부분에 질문이 있습니다.

0

192

2

Field초기화

0

141

1

virtual과 override 차이

0

316

2

3:30 참조자 리턴

0

169

1

map 찾기

0

159

1

프로그램 질문드려요

0

261

1

캐스팅 질문

0

139

1