簡體   English   中英

std :: nullptr_t類型的用途是什么?

[英]What are the uses of the type `std::nullptr_t`?

我了解到nullptr除了可以轉換為任何指針類型(但不能轉換為任何整數類型)之外,還具有自己的類型std::nullptr_t 因此,可能會有一個方法重載接受std::nullptr_t

究竟為什么需要這種過載?

如果不止一個重載接受了指針類型,則必須接受std::nullptr_t的重載才能接受nullptr參數。 沒有std::nullptr_t重載,傳遞nullptr時應該選擇哪個指針重載是不明確的。

例:

void f(int *intp)
{
    // Passed an int pointer
}

void f(char *charp)
{
    // Passed a char pointer
}

void f(std::nullptr_t nullp)
{
    // Passed a null pointer
}

在某些特殊情況下,與nullptr_t類型進行比較有助於指示對象是否有效。

例如, std::functionoperator==operator!=重載只能將nullptr_t作為參數來判斷函數對象是否為空。 有關更多詳細信息,您可以閱讀此問題

另外,您還會給它其他什么類型的信息,而不僅僅是重新引入NULL所帶來的問題? 關鍵是要擺脫討厭的隱式轉換,但實際上我們無法更改舊程序的行為,因此就在這里。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM