C++0x FAQ中文版:nullptr——空指针标识

希望在 新的站点能够继续和大家一起交流学习。谢谢大家:)

nullptr——空指针标识

空指针标识(nullptr)(其本质是一个内定的常量)是一个表示空指针的标识,它不是一个整数。(译注:这里应该与我们常用的NULL宏相区别,虽然它们都是用来表示空置针,但NULL只是一个定义为常整数0的宏,而nullptr是C++0x的一个关键字,一个内建的标识符。下面我们还将看到nullptr与NULL之间更多的区别。)
    char* p = nullptr;
    int* q = nullptr;
    char* p2 = 0;           //这里0的赋值还是有效的,并且p=p2

    void f(int);
    void f(char*);

    f(0);         //调用f(int)
    f(nullptr);   //调用f(char*)

    void g(int);
    g(nullptr);       //错误:nullptr并不是一个整型常量
    int i = nullptr;  //错误:nullptr并不是一个整型常量
(译注:实际上,我们这里可以看到nullptr和NULL两者本质的差别,NULL是一个整型数0,而nullptr可以看成是一个char *。)
参考:

  • the C++ draft section ???
  • [N1488==/03-0071]  Herb Sutter and Bjarne Stroustrup:A name for the null pointer: nullptr .
  • [N2214 = 07-0074 ]  Herb Sutter and Bjarne Stroustrup:A name for the null pointer: nullptr (revision 4) .


(翻译:张潇)

From:http://imcc.blogbus.com/logs/107147212.html

你可能感兴趣的:(C++,c,null,n2)