C 11新標準之三 nullptr

2021-07-29 14:58:14 字數 720 閱讀 2982

c++11中引入了新的空指標常量nullptr,nullptr可以轉換成任意型別的指標,使用方式如下:

[cpp]view plain

copy

int*p1 = nullptr; 

//等同於 int *p1 = 0;

在c++11之前,c++程式設計師經常使用null來作為空指標常量,null的定義如下:

[cpp]view plain

copy

#define null 0

但是在使用過程中,如果遇到過載的函式可能會出現歧義:

[cpp]view plain

copy

void

foo(

inti){};    

void

foo(

char

*){};    

foo(null) ?? //呼叫歧義

因此為了解決這一問題使用nullptr,現代c++的程式應該使用nullptr用來初始化空指標

同c++03的版本一樣,以下的使用方式都是正確的

[cpp]view plain

copy

int*p = nullptr;  

if(p)  

if(!p)  

if(p == 0)  

C 11新標準總結

c 11新標準出現已久,在此主要對它做乙個總結 c 11新增型別long long和unsigned long long,以支援64位的整型,char16 t,char32 t,以支援16位和32位的字元表示。用大括號括起來的列表 初始化列表 的適用範圍,使其可用於所有內建型別和使用者定義的型別。使...

C 11 新標準學習記錄1

1.long long 型別,c primer 第五版中 說long long 是c 11 中新定義的人。我在使用xp 32位 vs2005 時,發現也有long long 型別,並且是8位元組的,應該是編譯器提供的一型別.2,列表初始化,對於內建變數,現在可以支援四種初始化方式 int i 0 i...

C 11新標準之五 constexpr

常量表示式必須在編譯期間計算出它的值並且 它的值不可以被改變。在c 11中,我們可以通過宣告constexpr讓編譯器確定乙個變數是不是常量表示式,宣告為constexpr的變數是const型別的變數,它必須由常量表示式來初始化。例如 cpp view plain copy constexpr in...