10-3. nullptr

Crat3 ㅣ 2023. 6. 20. 15:37

1. 함수 오버로딩에서의 문제

void Test(int a)
{
    cout << "Test(int)" << endl;
}

void Test(void* ptr)
{
    cout << "Test(*)" << endl;
}

int main()
{
    Test(0);
    Test(NULL);
}

NULL은 사실 0으로 정의되어 있기 때문에 Test 함수에 인수로 0을 넣던 NULL을 넣던 int형의 함수만 오버로딩 된다.

따라서 포인터형 함수를 오버로딩하기 위해서는 nullptr을 사용하여야 한다.

int main()
{
    Test(nullptr);
}

 

2. 코드 가독성

class Knight
{

public:

};

Knight* FindKnight()
{

    return nullptr;
}

int main()
{
    auto knight = FindKnight();
    if (knight == nullptr)
    {
        
    }
}

포인터형을 받는 FindKnight 같은 함수들을 이용하여 어떤 조건문을 만들 때 조건을 nullptr로 사용함으로써

사용자에게 FindKnight가 포인터형을 사용한다는 힌트를 줄 수 있다.

'기초 C++ 스터디 > 모던 C++' 카테고리의 다른 글

10-6. override, final  (0) 2023.06.20
10-5. delete - 삭제된 함수  (0) 2023.06.20
10-4. enum class  (0) 2023.06.20
10-2. 중괄호 초기화  (0) 2023.06.20
10-1. auto 문법  (0) 2023.06.20