[英]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::function
的operator==
和operator!=
重載只能將nullptr_t
作為參數來判斷函數對象是否為空。 有關更多詳細信息,您可以閱讀此問題 。
另外,您還會給它其他什么類型的信息,而不僅僅是重新引入NULL
所帶來的問題? 關鍵是要擺脫討厭的隱式轉換,但實際上我們無法更改舊程序的行為,因此就在這里。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.