프로그래밍/C++

#63. nullptr

코딩하는상후니 2022. 7. 22. 22:26

 


*기존의 방식
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