(Cโบโบ) ๐ณnullptr
0์ NULL์ด ์๋๋ค
๊ธฐ์กด NULL
์ฒ๋ผ ์ซ์ 0์ ๋ ํฌ์ธํฐ๋ก ์ฌ์ฉํ๋ค๋ณด๋ ์ซ์์ ํผ์ฉ๋์ด ๋ฌธ์ ๊ฐ ๋ ์ ์์๋ค. ๊ทธ๋์ Modern C++์์๋ nullptr
์ด๋ผ๋ ํค์๋๋ฅผ ์ ๊ณตํ๋ค.
#include <stdio.h>
#include <vector>
void foo(int)
{
printf("foo(int)\n");
}
void foo(int*)
{
printf("foo(int*)\n");
}
int main()
{
//foo(NULL);
foo(nullptr);
return 0;
}
์ ์ค๋ฒ๋ก๋ฉ ์์ ๋ฅผ ํตํด ์ฌ์ฉ๋ฒ์ ์ ์ ์๋ค. ๊ทธ๋ ๋ค๋ฉด nullptr์ ์ค์ ๊ตฌํ์ ์ด๋จ๊น?
const class // ์ต๋ช
ํด๋์ค
{
public:
template <typename T>
operator T*(void) const
{
return 0;
}
template <typename C, typename T>
operator T C::*(void) const
{
return 0;
}
private:
void operator&(void) const;
} nullptr = {}; // ๋จ ํ๋์ ๊ฐ์ฒด๊ฐ ์์ฑ๋๋ค
nullptr์ ์ ๊ตฌํ์ฒ๋ผ ํด๋์ค์ฌ์ ์ซ์์ ํผ์ฉ๋ ์ ์๊ณ ์ฐ์ฐ์ ์ค๋ฒ๋ก๋ฉ์ ํตํด ํฌ์ธํฐ์ฒ๋ผ ์ฌ์ฉ๋๋ค.