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 |