저는 현재 제 3 자 C++ 코드를 사용하고 있습니다.이 코드는 제게는 이상하게 보입니다 (저는 C++ 11로 시작했습니다). 나에게 남아있는 많은 것들 중 하나는, 당황 몇 가지 포인터 유형 NULL
에서 static_cast
의 많은 경우 :C++에서 SomeType *에 NULL을 캐스트하는 용도는 무엇입니까?
SomeClass* someClassPtr = static_cast<SomeClass*>(NULL);
난 당신이 예를 들어, 포인터를 캐스팅 수있어 기본 클래스 포인터에서 파생 클래스 포인터로,하지만 여기에는 전혀 상속이 없습니다. 최대한 멀리 볼 수있는,이 충분해야한다 :
:NULL
특정 포인터 타입으로 캐스트되지 않습니다이 코드에서
SomeClass* someClassPtr = NULL;
그러나 유일한 케이스, 벡터와 다른 컨테이너에 포인터는
SomeOtherClass.vecOfSomeClassPtr[i] = NULL;
그래서 제 질문은 다음과 같습니다
- 이
nullptr
이 전에에서이 단순히 이전 스타일 (또는 C 스타일) 코드인가? - 상속을 사용하여 작업 할 때 down-/upcasting 이외의 다른 용도로 캐스팅되었습니다/
NULL
? - 아니면 완전히 빠진 것이 있습니까?
그리고이 경우에 나는 그것이 잘못까지 확보하지 않은 : 그 아무것도 끊을 경우
내가 먼저보고, NULL
나중에 nullptr
와 static_cast<type*>(NULL)
의 모든 인스턴스를 대체 : 아니. 컴파일러가 이의를 제기하지 않으며 프로그램이 예상대로 작동하는 것 같습니다. 는하지만, 그래서 포인터가 까다로운 작은 놈들 될 수 있습니다 알고
- 아마
nullptr
의 사용에 대한 어떤 함정을 그리워 했습니까?
추신 : 예, 검색을 사용했는데 예, C 코드에서 비슷한 질문을 발견했습니다. 그러나 이것은 C++ 코드이며 뭔가를 가정하는 대신 확실하게 알고 싶었습니다.
한 가지 질문에 많은 질문이 있습니다. – user2079303
미래를 염두에 두겠습니다. – Floriel