*기존의 방식
0
NULL
=> #define 0 과 똑같다고 보면 됨.
*왜 nullptr 이 필요했을까 ??
1) 오동작
=> 치명적일 수 있음.
void Test(int a ) {}
void Test(int* ptr) { }
Test(0);
Test(NULL);
2) 가독성
nullptr
NULL
*nullptr
const
class
{
public:
// 그 어떤 타입의 포인터와도 치환 가능.
template<typename T>
operator T* () const
{
return 0;
}
// 그 어떤 타입의 멤버 포인터와도 치환 가능.
template<typename C, typename T>
operator T C::* () const
{
return 0;
}
private:
//void operator&() const; // 주소값 &을 막는다.
void operator&() = delete;
} Nullptr;
=> class 위에 const 를 붙임으로써 상수화.
const Nullptr _Nullptr;
using PlayerFUNC = void (Player::*)();
using PlayerFUNC2 = void (Player::*)(int, int);
int main()
{
PlayerFUNC fc = &Player::Die;
fc = _Nullptr;
PlayerFUNC2 fc2 = &Player::Attack;
fc2 = _Nullptr;
return 0;
}
본 내용은 인프런의 루키스님 강의를 듣고 정리한 내용입니다.
'프로그래밍 > C++' 카테고리의 다른 글
#65. enum class & override & final (0) | 2022.07.22 |
---|---|
#64. using (0) | 2022.07.22 |
#62. auto (0) | 2022.07.22 |
#61. 중괄호 초기화 { } (0) | 2022.07.22 |
#60. Algorithm (0) | 2022.07.21 |