簡體   English   中英

CII中RAII和智能指針之間的區別

[英]The difference between RAII and smart pointers in C++

對於我來說,這兩者之間的區別尚不清楚。 我讀到的關於它們的內容非常龐大和復雜(就像C ++一樣)。 例如, 這個屬於多年前,也來自WikiPedia。 可能這個問題本身很復雜。

我對它們的看法是,RAII是一種機制,我們將它用於智能指針,但我不確定這一點。 我需要一個簡單明了的答案。

你能用一個簡單的語言用一個小樣本代碼來解釋它嗎? 請記住,我處於C ++的低級別。

他們是免費的概念。 RAII意味着對象自動處理自己的資源。 智能指針是一種為分配的內存完成RAII的方法。

RAII是一種技術:

資源獲取是初始化或RAII,是一種C ++編程技術[1] [2],它綁定資源的生命周期( 分配的內存,執行的線程,打開的套接字,打開的文件,鎖定的互斥,數據庫連接 - 存在的任何東西有限的供應 )到具有自動存儲持續時間的對象的生命周期。

RAII的概念包括所有有限的資源,而智能點預計將管理動態分配的內存或由普通指針表示的任何資源,遵循RAII。

RAII是使用C ++自動調用析構函數來釋放構造函數中獲取的資源的想法。

首字母縮略詞表明只有模糊, 資源獲取是初始化

智能指針是一個至少重載operator->和取消引用operator*的類,以啟用指針表示法。 通常,智能指針將使用RAII技術自動釋放內存。 但它可以做其他事情。 然而,隱含的是智能指針以某種方式處理所包含的原始指針的“所有權”。 例如,一個簡單的迭代器類重載operator->operator*但不被視為智能指針。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM