C中NULL是宏定義的void*指針:
#define NULL ((void*)0)C++中void*指針不能隱式轉換成其他類型的指針,所以NULL是0的宏定義:#define NULL 0那么,假如有重載函數f(int)和f(T *),調用時用f(NULL),那么就會出現二義性,無法確定調用那個函數。nullptr是一個空指針類型nullptr_t的常量,nullptr_t類型可隱式轉換為其他類型的指針,但不能轉換為int,
在調用f(nullptr)時就能明確調用f(T *)。
新聞熱點
疑難解答
圖片精選