日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

c11部分新特性

發布時間:2023/12/20 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c11部分新特性 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、c11部分新特性

智能指針

智能指針作用:

C++程序設計中使用堆內存是非常頻繁的操作,使用普通指針容易造成內存泄漏、二次釋放等問題。C++11中引入了智能指針的概念。智能指針就是幫我們C++程序員管理動態分配的內存的,它會幫助我們自動釋放new出來的內存,從而避免內存泄漏
為什么智能指針可以像普通指針那樣使用???
因為其里面重載了 * 和 -> 運算符, * 返回普通對象,而 -> 返回指針對象。

auto_ptr:

auto_ptr 是c++ 98定義的智能指針模板,可以將new 獲得(直接或間接)的地址賦給這種對象。當對象過期時,其析構函數將使用delete 來釋放內存!

auto_ptr 被C++11拋棄的主要原因:

a、復制或者賦值都會改變資源的所有權。
b、在STL容器中使用auto_ptr存在著重大風險,因為容器內的元素必須支持可復制和可賦值。

unique_ptr:

unique_ptr是auto_ptr的一個改良版,不能賦值也不能拷貝,保證一個對象同一時間只有一個智
能指針。

shared_ptr:

shared_ptr可以使得一個對象可以有多個智能指針,當這個對象所有的智能指針被銷毀時就會自
動進行回收。(內部使用計數機制進行維護)

weak_ptr:

weak_ptr是為了協助shared_ptr而出現的,只可以從一個 shared_ptr 或另一個 weak_ptr 對象構造, 他的構造或者析構不會改變計數器,它不能訪問對象,只能觀測shared_ptr的引用計數,防止出現死鎖。

右值引用

右值引用和左值引用的區別:
左值持久,右值短暫,左值引用綁定到有確定存儲空間以及變量名的對象上,表達式結束后對象依然存在;右值引用綁定到要求轉換的表達式、字面常量、返回右值的表達式等臨時對象上,賦值表達式結束后就對象就會被銷毀。

引入右值引用原因
替代需要銷毀對象的拷貝,提高效率

lambda表達式


1.捕獲列表。在C ++規范中也稱為Lambda導入器, 捕獲列表總是出現在Lambda函數的開始處。
2.參數列表。與普通函數的參數列表一致。如果不需要參數傳遞,則可以連同括號“()”一起省略。
3.異常說明。用于Lamdba表達式內部函數拋出異常。
4.返回類型。 追蹤返回類型形式聲明函數的返回類型。我們可以在不需要返回值(或者明確返回類型)的時候也可以省略。
5. lambda函數體。內容與普通函數一樣,不過除了可以使用參數之外,還可以使用所有捕獲的變量。

并發編程

并發與并行的區別:
并發:同一時間段內可以交替處理多個操作
并行:同一時間段內同時處理多個操作
并發的兩種模式:
1.多進程并發:多個進程獨立地運行,它們之間通過進程間常規的通信渠道傳遞訊息(信號,套接字,文件,管道等),這種進程間通信不是設置復雜就是速度慢
2.多線程并發:線程就像輕量級的進程,每個線程相互獨立運行,但它們共享地址空間。在多線程編程中,我們必須確保每個線程鎖訪問到的數據是一致的。

總結

以上是生活随笔為你收集整理的c11部分新特性的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。