Notice
Recent Posts
Recent Comments
Link
오븐 노트
[C++] nullptr 본문
#include <iostream>
using namespace std;
#include <vector>
#include <list>
#include <deque>
#include <map>
#include <set>
#include <algorithm>
class Knight
{
public:
void Test()
{
}
};
Knight* FindKnight()
{
// TODO
return nullptr;
}
void Test(int a)
{
cout << "Test(int)" << endl;
}
void Test(void* ptr)
{
cout << "Test(*)" << endl;
}
// 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; // 주소값 &을 막는다
} _NullPtr; // class를 선언하자마자 객체를 선언
int main()
{
int* ptr = NULL; // 과거 0 NULL
// 1) 오동작
Test(0);
Test(NULL); // define 0
Test(_NullPtr);
// 2) 가독성
auto knight = FindKnight();
if (knight == _NullPtr)
{
}
void (Knight::* memFunc)();
memFunc = &Knight::Test;
if (memFunc == _NullPtr)
{
}
//nullptr_t whoami = nullptr; // nullptr의 타입
return 0;
}
[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문 - 인프런 | 강의
C++ 카테고리의 글은 인프런 Rookiss님의 강의를 공부하며 정리하는 내용입니다.
이미 알고 있는 내용도 다시 정리 되어있을 수 있습니다.
모든 글은 제가 공부하기 위해 작성합니다.
'Develop > C++' 카테고리의 다른 글
[C++] enum class (0) | 2023.12.13 |
---|---|
[C++] using (0) | 2023.12.07 |
[C++] 중괄호 초기화 { } (0) | 2023.10.16 |
[C++] auto (0) | 2023.10.03 |
[C++] algorithm (0) | 2023.09.30 |