nullptr 與 NULL:為什麼要換?
在 C 中,nullptr 關鍵字已取代基於指標的應用程式的 NULL。雖然這兩個選項都表示空指針,但 nullptr 具有使其成為首選的優勢。
為什麼要使用 nullptr 而不是 NULL?
用 nullptr 取代 NULL 的主要原因是型別安全。 NULL 是定義為 (void )0 的宏,其型別為 (void )。這種廣泛的類型相容性可能會導致無意的行為,特別是在涉及重載函數的情況下。
例如,考慮以下函數宣告:
void f(int); void f(foo *);
如果使用 NULL 指標呼叫 f,編譯器可能無法決定要執行哪個函式重載。這是因為 NULL 可以隱式轉換為指標類型,使其能夠匹配第二個重載。
nullptr 的優點
nullptr,另一方面,有一種不同類型的 std::nullptr_t。當用於重載解析時,它僅匹配 std::nullptr_t 或指標類型的實例。這消除了由於 NULL 更廣泛的類型相容性而導致的歧義。
此外,nullptr 可確保在程式碼中清楚地表達使用空指標的意圖。
因此,使用 nullptr 而不是 NULL提供增強的類型安全性,防止重載函數呼叫中的意外行為,並提高程式碼清晰度。
以上是nullptr 與 NULL:為什麼 C 轉向型別安全?的詳細內容。更多資訊請關注PHP中文網其他相關文章!