nullptr

oak_cassia·2021년 12월 12일
0

nullptr의 값을 실질적으로 0이다.
NULL 도 0이다
0도 0이다
그럼 무슨 차이가 있을까

void Test(int a)
{}

void Test(void *ptr)
{}

Test(0)
Test(NULL)
윗 버전 호출

test(nullptr)
아래 버전 호출

오동작 방지
가독성

nullptr_t 객체에 가깝다.

const// 이걸 붙일 수 있다.
class NullPtr// 이거 없앨 수 있다. 선언과 동시에 생성할때?
{
public:
//어떤 타입의 포인터와도 치환 가능
template<typename T>
operator T* () const
{
return 0;
}
//어떤 타입의 멤버 포인터와도 치환 가능
template<typename C, typename T>
operator T C::* () const
{
return 0;

}

private:
void operator&() const; //&를 이용한 주소 접근 막는다
// =delete?
} _NullPtr;//c 구조체랑같지?

void (Dog::* memFunc)();
memFunc=&Dog::Test;

if(memFunc==_NUllPtr)
{

}
profile
벽에 붙은 달팽이 ↑i@

0개의 댓글