C++11之nullptr

C++11之前,我們使用 ptr = NULL對某個指針進行初始化。
同時還使用ptr == NULL進行指針是否為空的判斷。

在C語言中,空指針的值表示為

#define NULL (void *)0

但是C++對語法的類型檢查更為嚴格,(void *)0就不好使了,比如:

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

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

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

C++引入nullptr,作為一個新的關(guān)鍵字,解決了上述讓人頭疼的問題。
讓我們再回顧一下幾種“0”的區(qū)別。

  • 整數(shù)0 -- int number zero : 0
  • 指向空類型的指針 -- a pointer to an object of unknown type : void*
  • 無指向的空指針 -- a pointer that does not point to an object : nullptr
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容