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 執行緒池---完全使用c++ 11新特性C++執行緒
- C++整理20_C++11新特性C++
- OceanBase學習之路11|體驗 DDL 新特性(Oracle 模式)Oracle模式
- C++中的NULL和nullptrC++Null
- C++新特性C++
- Java 11新特性Java
- C++ 2.0新特性C++
- JDK 1.8 新特性學習(Stream)JDK
- Java1.8新特性學習Java
- C++11新特性C++
- Automatic Reference Counting(ARC)特性學習(iOS5新特性學習之五)iOS
- C++11新特性(一):語言特性C++
- C++11新特性(三):語言特性C++
- C++11新特性(二):語言特性C++
- C#11新特性整理C#
- Java 11 的新特性(下)Java
- C++11:一些微小的變化(新的資料型別、template表示式內的空格、nullptr、std::nullptr_t)C++資料型別Null
- jdk-1.8新特性學習筆記JDK筆記
- JDK8新特性學習總結JDK
- JDK8 新特性學習筆記JDK筆記
- 玩轉iOS開發:iOS 11 新特性《Layout的新特性》iOS
- JDK11新特性詳解JDK
- C# 11 都有哪些新特性?C#
- IOS11新特性之maskedCornersiOS
- C++各版本引入的新特性C++
- 一起學習React18 新特性React
- 學習筆記~1.4 HTML5新特性筆記HTML
- [Java學習筆記]JDK1.8新特性學習(一)Lambda表示式Java筆記JDK
- ECMAScript 2020(ES11)新特性簡介
- Java 11正式釋出,新特性解讀Java
- OceanBase學習之路12|體驗 DDL 新特性(MySQL 模式)MySql模式
- JDK 新特性學習筆記之模組系統JDK筆記
- 2019 年的 JavaScript 新特性學習指南 | 掘金年度徵文JavaScript
- Solidity初學-0.8新特性Solid
- c++學習C++
- Oracle 11g DG新特性--Automatic block repairOracleBloCAI