[英]Are objects of type nullptr_t ever needed?
引用C ++ 11:(18.2 / 9)
nullptr_t
定義如下:namespace std { typedef decltype(nullptr) nullptr_t; }
nullptr_t
是同義詞的類型具有3.9.1和4.10中描述的特征。 [注意:雖然無法獲取nullptr
的地址,但可以采用另一個作為左值的nullptr_t
對象的地址 。 - 尾注]
我們是否需要nullptr_t
類型的nullptr_t
(除了nullptr
)?
在這個例子中它很有用,這對我來說足夠好了:
#include <cstddef>
#include <iostream>
#include <limits>
int bonus(int){return std::numeric_limits<int>::max();}
int bonus(std::nullptr_t){return 0;}
int main()
{
std::nullptr_t bar;
std::cout << bonus(0) << "\n";
std::cout << bonus(nullptr) << "\n";
std::cout << bonus(bar) << "\n";
}
C ++是一種通用語言,如果與nullptr
相關聯的類型不是重載解析系統的一部分,那將會很煩人。
nullptr
是一個prvalue,所以你不能拿它的地址。 (這不是一個對象。)說明是指這樣的情況:
nullptr_t n;
然后, n
是nullptr_t
類型的普通對象,因此您可以獲取其地址。 這似乎沒有任何用處,但在通用代碼中,此功能可能以某種方式出現。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.