C++11之nullptr

C++11之前,我們使用 ptr = NULL對(duì)某個(gè)指針進(jìn)行初始化。
同時(shí)還使用ptr == NULL進(jìn)行指針是否為空的判斷。

在C語(yǔ)言中,空指針的值表示為

#define NULL (void *)0

但是C++對(duì)語(yǔ)法的類(lèi)型檢查更為嚴(yán)格,(void *)0就不好使了,比如:

int *p = (void *)0; // error, cannot assign void* to int*

所以在C++中的NULL為 #define NULL 0,但這又會(huì)導(dǎo)致函數(shù)重載時(shí)遇到困難:

void foo(char c, void *p);
void foo(char c, int i);
int main()
{
    foo( 'x', NULL ); //?? Which foo
}

C++引入nullptr,作為一個(gè)新的關(guān)鍵字,解決了上述讓人頭疼的問(wèn)題。
讓我們?cè)倩仡櫼幌聨追N“0”的區(qū)別。

  • 整數(shù)0 -- int number zero : 0
  • 指向空類(lèi)型的指針 -- a pointer to an object of unknown type : void*
  • 無(wú)指向的空指針 -- a pointer that does not point to an object : nullptr
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容