61_智能指針模板類

0. 智能指針的意義

  • 現(xiàn)代C++開發(fā)庫中最重要的類模板之一
  • C++中自動內(nèi)存管理的主要手段
  • 能夠在很大程度避開內(nèi)存相關(guān)的問題

1. STL中的智能指針:auto_ptr

  • 生命周期結(jié)束時谣妻,銷毀指向的內(nèi)存空間
  • 不能指向堆數(shù)組僧须,只能指向堆對象(變量)
  • 一片堆空間只屬于一個智能指針對象
  • 多個智能指針對象不能指向同一片堆空間

編程說明:auto_ptr使用

#include <iostream>
#include <string>
#include <memory>

using namespace std;

class Test
{
    string m_name;
public:
    Test(const char* name)
    {
        m_name = name;
        cout << "Hello " << m_name << endl;
    }
    
    void print()
    {
        cout << "I am " << m_name << endl;
    }
    
    ~Test()
    {
        cout << "Goodbey " << m_name << endl;
    }

};

int main()
{
    auto_ptr<Test> pt(new Test("Jacob"));
    
    cout << "pt = " << pt.get() << endl;
    
    pt->print();
    
    cout << endl;
    
    auto_ptr<Test> pt1(pt);             // 指針的轉(zhuǎn)移
    
    cout << "pt = " << pt.get() << endl;
    cout << "pt1 = " << pt1.get() << endl;
    
    pt1->print();
    
    return 0;
}

輸出結(jié)果:

Hello Jacob
pt = 0x9c58008
I am Jacob

pt = 0
pt1 = 0x9c58008
I am Jacob
Goodbey Jacob

2.STL中的其它智能指針

  • shared_ptr:帶有引用計(jì)數(shù)機(jī)制,支持多個指針對象指向同一片內(nèi)存
  • weak_ptr:配合shared_ptr而引入的一種智能指針
  • unique_ptr:一個指針對象指向一片內(nèi)存,不能拷貝構(gòu)造和賦值

3. Qt中的智能指針

  • QPointer:
    • 優(yōu)點(diǎn):當(dāng)其指向的對象被銷毀時矛绘,它(QPointer允許有多個)會被自動置空
    • 缺點(diǎn):析構(gòu)時不會自動銷毀所指向的對象
  • QSharedPointer
    • 引用計(jì)數(shù)型智能指針
    • 可以被自由地拷貝和賦值
    • 當(dāng)引用計(jì)數(shù)為0時才刪除指向的對象
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌司志,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,820評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件降宅,死亡現(xiàn)場離奇詭異骂远,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)腰根,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,648評論 3 399
  • 文/潘曉璐 我一進(jìn)店門激才,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人额嘿,你說我怎么就攤上這事瘸恼。” “怎么了册养?”我有些...
    開封第一講書人閱讀 168,324評論 0 360
  • 文/不壞的土叔 我叫張陵东帅,是天一觀的道長。 經(jīng)常有香客問我球拦,道長靠闭,這世上最難降的妖魔是什么邓夕? 我笑而不...
    開封第一講書人閱讀 59,714評論 1 297
  • 正文 為了忘掉前任,我火速辦了婚禮阎毅,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘点弯。我一直安慰自己扇调,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,724評論 6 397
  • 文/花漫 我一把揭開白布抢肛。 她就那樣靜靜地躺著狼钮,像睡著了一般。 火紅的嫁衣襯著肌膚如雪捡絮。 梳的紋絲不亂的頭發(fā)上熬芜,一...
    開封第一講書人閱讀 52,328評論 1 310
  • 那天,我揣著相機(jī)與錄音福稳,去河邊找鬼涎拉。 笑死,一個胖子當(dāng)著我的面吹牛的圆,可吹牛的內(nèi)容都是我干的鼓拧。 我是一名探鬼主播,決...
    沈念sama閱讀 40,897評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼越妈,長吁一口氣:“原來是場噩夢啊……” “哼季俩!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起梅掠,我...
    開封第一講書人閱讀 39,804評論 0 276
  • 序言:老撾萬榮一對情侶失蹤酌住,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后阎抒,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體酪我,經(jīng)...
    沈念sama閱讀 46,345評論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,431評論 3 340
  • 正文 我和宋清朗相戀三年挠蛉,在試婚紗的時候發(fā)現(xiàn)自己被綠了祭示。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,561評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡谴古,死狀恐怖质涛,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情掰担,我是刑警寧澤汇陆,帶...
    沈念sama閱讀 36,238評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站带饱,受9級特大地震影響毡代,放射性物質(zhì)發(fā)生泄漏阅羹。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,928評論 3 334
  • 文/蒙蒙 一教寂、第九天 我趴在偏房一處隱蔽的房頂上張望捏鱼。 院中可真熱鬧,春花似錦酪耕、人聲如沸导梆。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,417評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽看尼。三九已至,卻和暖如春盟步,著一層夾襖步出監(jiān)牢的瞬間藏斩,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,528評論 1 272
  • 我被黑心中介騙來泰國打工却盘, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留狰域,地道東北人。 一個月前我還...
    沈念sama閱讀 48,983評論 3 376
  • 正文 我出身青樓谷炸,卻偏偏與公主長得像北专,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子旬陡,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,573評論 2 359

推薦閱讀更多精彩內(nèi)容

  • 1. 什么是智能指針拓颓? 智能指針是行為類似于指針的類對象,但這種對象還有其他功能描孟。 2. 為什么設(shè)計(jì)智能指針驶睦? 引...
    MinoyJet閱讀 640評論 0 1
  • 導(dǎo)讀## 最近在補(bǔ)看《C++ Primer Plus》第六版,這的確是本好書匿醒,其中關(guān)于智能指針的章節(jié)解析的非常清晰...
    小敏紙閱讀 2,005評論 1 12
  • 原作者:Babu_Abdulsalam 本文翻譯自CodeProject场航,轉(zhuǎn)載請注明出處。 引入### Ooops...
    卡巴拉的樹閱讀 30,107評論 13 74
  • C++智能指針 原文鏈接:http://blog.csdn.net/xiaohu2022/article/deta...
    小白將閱讀 6,865評論 2 21
  • C++ 智能指針詳解 一廉羔、簡介由于 C++ 語言沒有自動內(nèi)存回收機(jī)制溉痢,程序員每次 new 出來的內(nèi)存都要手動 de...
    yangqi916閱讀 1,371評論 0 2