C++11與C++98的區別


## C++11與C++98的區別

> 本文參考了許多鄧凡平老師的blogC++11學習之路

- 這倆天學QT的時候發現遇到了 很多C++11的特性 於是決定點C++11與C++98的區別,不定時更新

1. 空指針(nullptr)取代了之前的NULL

2. 字符串中加入了Raw字符串,定義形式為:R"附加定界符(字符串)附加定界符"在定界符之間的字符串都不會轉義。

3. C++推出“移動”的概念,此概念不同於拷貝,拷貝的結果是倆個指針都指向了新的內容,而移動則是一個對象完全掏空自己,把自己的所有內容交給另一個對象。“移動”的概念適用的地方:節省拷貝次數,提升程序的運行效率。其運行的過程與拷貝函數類似,只是在拷貝結束之后,將變量直接清空。

> 注:移動構造函數A::A(A&& a);其中的參數類型為&&表示A的右值引用類型,它沒有名字,不能取地址;若為&則表示A的左值引用類型,它有名字,可以取地址;之所以將移動構造函數定義為&&是為了和拷貝構造函數區分開來,在我們調用構造函數的時候,若我們將一個右值引用類型作為變量輸入,我們就會調用移動構造函數,若我們將左值引用類型作為參數,則會調用移動構造函數。,我們要保證移動構造/賦值函數被調用,而不是拷貝構造/賦值函數被調用。所以我們需要使用std::move()函數,將一個左值引用轉化為右值引用,則會調用移動構造函數。若沒有定義移動構造或移動賦值函數,編譯器會調用對應的拷貝構造或拷貝賦值函數。
————————————————
版權聲明:本文為CSDN博主「潘然PR」的原創文章
原文鏈接


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM