- C++服務器開發(fā)精髓
- 張遠龍
- 1034字
- 2021-07-23 18:22:06
1.3 C++11/14/17新增的實用特性
C++11標準是C++發(fā)展史上具有里程碑意義的一個版本,主要改進了C++98/03標準存在的兩大問題。
◎ 廢棄了C++98/03標準中一些不實用的語法和庫(如 std::auto_ptr),改進或者增強了C++98/03標準中一些語法元素的用法(如auto關鍵字、統(tǒng)一的類的初始化列表語法),新增了其他編程語言早已支持的關鍵字和語法(如 final 關鍵字、=default語法、=delete語法)。
◎ 開始在語法和自帶標準庫層面增加對操作系統(tǒng)功能的支持(如線程庫、時間庫)。之前很多功能的實現(xiàn),C++本身是無法支持的,必須依賴和使用原生操作系統(tǒng)的API函數(shù),導致開發(fā)者需要編寫大量的平臺相關的代碼。
隨著C++11標準的發(fā)展,后續(xù)又出現(xiàn)了C++14、C++17及C++20標準,但它們都是對C++11做小范圍的修改和擴展,其主要內(nèi)容還是繼續(xù)完善一些特性和進一步提高一些標準庫的性能。由于C++11新增了大量方便開發(fā)的功能與特性,所以支持C++11標準的編譯器(如VC++12、g++4.8)一經(jīng)發(fā)布,就立即被廣大開發(fā)者和使用C++的企業(yè)廣泛采用。C++11新增的特性確實大大提高了開發(fā)效率,使用起來非常方便。
對于 MSVC編譯器,支持 C++11新標準的最低版本是 VC++12(隨 Visual Studio 2013一起發(fā)布,Visual Studio簡稱VS)。VS 2015支持部分C++14特性,VS 2017支持C++14和部分C++17特性,VS 2019支持C++17大多數(shù)語言特性。
對于gcc/g++編譯器,支持C++11新標準的最低版本是gcc/g++4.8,支持C++14的版本是gcc/g++4.9,gcc/g++7.3支持C++17的大多數(shù)語言特性。
對于某個支持C++11/14/17標準的Visual Studio版本,我們一般不需要做任何特殊設置即可使用新語言標準支持的語法特性和庫功能,當然,也可以指定具體的語言規(guī)范版本。以Visual Studio 2019為例,新建一個C++項目之后,選中該項目,在彈出的右鍵菜單中選擇Properties菜單項,打開該項目的屬性設置對話框,如下圖所示。

然后選擇菜單“C/C++”→“Language”→“C++Language Standard”,在彈出的下拉菜單中選擇需要的C++標準即可,如下圖所示。

這里需要說明:Default選項在VS 2019中對應使用 C++14規(guī)范標準;對Preview-Features from the latest C++Working Draft(/std:c++latest)選項使用當前最新的C++標準(這里是 C++20),在微軟完成 C++20 標準中所有的實現(xiàn)時,這里會多出一個選項,即ISO C++20 Standard(/std:c++20)。
對于gcc/g++編譯器(最低版本4.8),如果要使用C++11/14/17語言規(guī)范,則需要在編譯時設置相應的選項值。例如將 test.cpp文件編譯成名為 test的可執(zhí)行文件,并需要C++11語言規(guī)范的支持,則使用:

在使用Makefile文件編譯項目時可以這樣指定:

在使用cmake編譯項目時可以在CMakeLists.txt文件中添加如下行:

對于-std選項的值,可以將其按需設置成c++14或c++17。
對于gcc/g++7.3及以上版本,由于編譯器本身就支持包括C++17在內(nèi)的所有語言特性,因此如果在代碼中用到某個特性,則由于編譯器本身就支持,可以不必使用-std選項指定具體的語言標準。
C++11/14/17新增的特性非常多,本章接下來會介紹實際開發(fā)中高頻使用的新語法和新特性。
- Git Version Control Cookbook
- PowerCLI Cookbook
- OpenCV 3和Qt5計算機視覺應用開發(fā)
- Mastering PHP Design Patterns
- Python高級編程
- Data Analysis with IBM SPSS Statistics
- Access 2016數(shù)據(jù)庫管
- 青少年Python編程入門
- Serverless架構
- INSTANT Sinatra Starter
- Learning Continuous Integration with TeamCity
- Hands-On Nuxt.js Web Development
- 從零開始學Python網(wǎng)絡爬蟲
- 平面設計經(jīng)典案例教程:CorelDRAW X6
- Java并發(fā)編程:核心方法與框架