C++ 11 新特性 nullptr 學習
nullptr 出現的目的是為了替代 NULL。
在某種意義上來說,傳統 C++ 會把 NULL、0 視為同一種東西,這取決於編譯器如何定義 NULL,有些編譯器會將 NULL 定義為 ((void*)0),有些則會直接將其定義為 0。
C++ 不允許直接將 void * 隱式轉換到其他型別,但如果 NULL 被定義為 ((void*)0),那麼當編譯char *ch = NULL;時,NULL 只好被定義為 0。
這將導致C++ 中過載特性會發生混亂;
為了解決這個問題,C++11 引入了 nullptr 關鍵字,專門用來區分空指標、0。
nullptr 的型別為 nullptr_t,能夠隱式的轉換為任何指標或成員指標的型別,也能和他們進行相等或者不等的比較。
當需要使用 NULL 時候,養成直接使用 nullptr的習慣。
下面用VC6看一下;Win7;
新建一個單文件工程;
在視類標頭檔案新增兩個成員函式定義;
在視類CPP檔案實現如下;
在OnDraw函式進行呼叫;分別定義指標為NULL,nullptr;
編譯;不成功,如下;VC6不支援C++ 11;
註釋掉nullptr語句;輸出如下;
相關文章
- JDK11新特性學習(一)JDK
- JDK11新特性學習(二)JDK
- C++ 11 新特性之ClassC++
- C++ 11 新特性之容器相關特性C++
- 天天學習ORACLE(三)-11G新特性Oracle
- c++ 11 執行緒池---完全使用c++ 11新特性C++執行緒
- C++整理20_C++11新特性C++
- C++ 11 新特性之隨機數庫C++隨機
- C++ 11 新特性之正規表示式C++
- C++新特性C++
- OceanBase學習之路11|體驗 DDL 新特性(Oracle 模式)Oracle模式
- JDK 1.8 新特性學習(Stream)JDK
- Java1.8新特性學習Java
- java8新特性學習Java
- C++ 2.0新特性C++
- C++的新特性C++
- Oracle11新特性——PLSQL新特性(七)OracleSQL
- Oracle11新特性——PLSQL新特性(六)OracleSQL
- Oracle11新特性——PLSQL新特性(五)OracleSQL
- Oracle11新特性——PLSQL新特性(四)OracleSQL
- Oracle11新特性——PLSQL新特性(三)OracleSQL
- Oracle11新特性——PLSQL新特性(二)OracleSQL
- Oracle11新特性——PLSQL新特性(一)OracleSQL
- Java 11新特性Java
- 【ORACLE新特性】11G 分割槽新特性Oracle
- C++11:一些微小的變化(新的資料型別、template表示式內的空格、nullptr、std::nullptr_t)C++資料型別Null
- Automatic Reference Counting(ARC)特性學習(iOS5新特性學習之五)iOS
- jdk-1.8新特性學習筆記JDK筆記
- JDK8新特性學習總結JDK
- JDK8 新特性學習筆記JDK筆記
- C++11新特性C++
- C++ 14 新特性總結C++
- 一起學習React18 新特性React
- 學習筆記~1.4 HTML5新特性筆記HTML
- JDK5.0新特性的學習--列舉JDK
- C++ 11 新特性之型別推斷與型別獲取C++型別
- 全面學習ORACLE Scheduler特性(11)使用Job ClassesOracle
- C++11新特性(二):語言特性C++