fbpx
维基百科

nullptr

nullptrC++11语言标准用来表示空指针常量值[1],可以指派給任意類型的指標變數[2]。部分編譯器將之視為一個關鍵字,例如Visual Studio[3],部分使用舊標準的C++編譯器則未實作需要自行定義[4]或引入額外的標頭檔[2]

nullptr
基本資料
所屬概念空指標
種類字面常數
語言C++
詳細資料
語法nullptr
型態std::nullptr_t
標頭檔nullptr.h (C++11之前)
首次出現C++11

定義

在C语言中,空指標可以使用(void *)0;來表示,且標準庫中也是如此定義,但在C++语言中,由于对语法的类型检查更为严格,因而空指针的值就不能表示为(void *)0;。例如,空指针的值表示为FILE *fp=(void *)0;编译报错。所以至少自C++98开始#define NULL 0。 但这会在函数重载时遇到新的困难。例如

void foo(char c, void *p); void foo(char c, int i); int main() {  foo('x',NULL);//匹配哪个版本的foo()? } 

C++11开始,定义了空指针的常值为nullptr,解决了上述函数重载问题。

在没有C++11的nullptr时,可以自己实现一个[4]

const class nullptr_t { public:  template<class T>  inline operator T*() const  { return 0; }  template<class C, class T>  inline operator T C::*() const  { return 0; }   private:  void operator&() const; } nullptr = {}; 

C++语言标准规定:[5] 值0或std::nullptr_t类型的纯右值是空指针常量(null pointer constant)。可以通过空指针转换(null pointer conversion)成为某个类型的空指针值(null pointer value)。

C++语言标准还规定,[6]在实参个数多于形参个数时(即可变参数个数的函数调用,可用va_arg来访问),多出来的实参如果是std::nullptr_t类型,则转化为(void *)0供函数访问。

std::nullptr_t定义在标准头文件<cstddef>中。但实际上在源程序中不包含该头文件仍可以正常使用nullptr_t类型与nullptr对象。

nullptr_t

nullptr_t是字面常數nullptr的資料型態[7]。它是一種特殊的類型,並不是一種指標類型也不是指向任何種變數型態的指標類型。nullptr_t位於std命名空間中,且定義於<cstddef>標頭檔中[8]。可透過is_null_pointer來檢查物件是否為這種型態[9]

參見

参考文献

  1. ^ A name for the null pointer: nullptr (PDF). stroustrup.com. 2003-09-10 [2018-09-09]. (原始内容 (PDF)于2017-07-05). 
  2. ^ 2.0 2.1 nullptr. Embedded Template Library. [2018-09-09]. (原始内容于2018-09-09). 
  3. ^ nullptr (C++ Component Extensions). [2018-09-09]. (原始内容于2018-09-09). 
  4. ^ 4.0 4.1 《Imperfect C++ --- Practical Solutions for Real-Life Programming》 作者: 威尔逊 译者: 荣耀 / 刘未鹏 人民邮电出版社 2006年1月 ISBN 9787115136848
  5. ^ 《C++14语言标准》4.10.1
  6. ^ 《C++14语言标准》5.2.2.7
  7. ^ std::nullptr_t. cplusplus.com. [2018-09-09]. (原始内容于2018-03-24). 
  8. ^ Null pointers. IBM. [2018-09-09]. (原始内容于2018-09-09). 
  9. ^ std::is_null_pointer. cplusplus.com. [2018-09-09]. (原始内容于2018-03-12). 

nullptr, 是c, 11语言标准用来表示空指针的常量值, 可以指派給任意類型的指標變數, 部分編譯器將之視為一個關鍵字, 例如visual, studio, 部分使用舊標準的c, 編譯器則未實作需要自行定義, 或引入額外的標頭檔, 基本資料所屬概念空指標種類字面常數語言c, 詳細資料語法型態std, t標頭檔, 11之前, 首次出現c, 此條目介紹的是c, 11語言標準的關鍵字, 关于null, pointer, 请见, 空指標, 目录, 定義, 參見, 参考文献定義, 编辑在c语言中, 空指標可以使用, v. nullptr是C 11语言标准用来表示空指针的常量值 1 可以指派給任意類型的指標變數 2 部分編譯器將之視為一個關鍵字 例如Visual Studio 3 部分使用舊標準的C 編譯器則未實作需要自行定義 4 或引入額外的標頭檔 2 nullptr基本資料所屬概念空指標種類字面常數語言C 詳細資料語法nullptr型態std nullptr t標頭檔nullptr h C 11之前 首次出現C 11 此條目介紹的是C 11語言標準的關鍵字 关于null pointer 请见 空指標 目录 1 定義 2 nullptr t 3 參見 4 参考文献定義 编辑在C语言中 空指標可以使用 void 0 來表示 且標準庫中也是如此定義 但在C 语言中 由于对语法的类型检查更为严格 因而空指针的值就不能表示为 void 0 例如 空指针的值表示为FILE fp void 0 编译报错 所以至少自C 98开始 define NULL 0 但这会在函数重载时遇到新的困难 例如 void foo char c void p void foo char c int i int main foo x NULL 匹配哪个版本的foo C 11开始 定义了空指针的常值为nullptr 解决了上述函数重载问题 在没有C 11的nullptr时 可以自己实现一个 4 const class nullptr t public template lt class T gt inline operator T const return 0 template lt class C class T gt inline operator T C const return 0 private void operator amp const nullptr C 语言标准规定 5 值0或std nullptr t类型的纯右值是空指针常量 null pointer constant 可以通过空指针转换 null pointer conversion 成为某个类型的空指针值 null pointer value C 语言标准还规定 6 在实参个数多于形参个数时 即可变参数个数的函数调用 可用va arg来访问 多出来的实参如果是std nullptr t类型 则转化为 void 0供函数访问 std nullptr t定义在标准头文件 lt a href Cstddef html class mw redirect title Cstddef cstddef a gt 中 但实际上在源程序中不包含该头文件仍可以正常使用nullptr t类型与nullptr对象 nullptr t 编辑nullptr t是字面常數nullptr的資料型態 7 它是一種特殊的類型 並不是一種指標類型也不是指向任何種變數型態的指標類型 nullptr t位於std命名空間中 且定義於 lt cstddef gt 標頭檔中 8 可透過is null pointer來檢查物件是否為這種型態 9 參見 编辑空指標参考文献 编辑 A name for the null pointer nullptr PDF stroustrup com 2003 09 10 2018 09 09 原始内容存档 PDF 于2017 07 05 2 0 2 1 nullptr Embedded Template Library 2018 09 09 原始内容存档于2018 09 09 nullptr C Component Extensions 2018 09 09 原始内容存档于2018 09 09 4 0 4 1 Imperfect C Practical Solutions for Real Life Programming 作者 威尔逊 译者 荣耀 刘未鹏 人民邮电出版社 2006年1月 ISBN 9787115136848 C 14语言标准 4 10 1 C 14语言标准 5 2 2 7 std nullptr t cplusplus com 2018 09 09 原始内容存档于2018 03 24 Null pointers IBM 2018 09 09 原始内容存档于2018 09 09 std is null pointer cplusplus com 2018 09 09 原始内容存档于2018 03 12 取自 https zh wikipedia org w index php title Nullptr amp oldid 64455471, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。