成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

C++智能指針應(yīng)用方式體驗(yàn)

開(kāi)發(fā) 后端
C++智能指針?lè)N類繁多,應(yīng)方式靈活,在實(shí)際編程中給我們帶來(lái)了非常大的好處。那么如何才能正確的應(yīng)用呢?在這里將會(huì)進(jìn)行詳細(xì)介紹。

C++語(yǔ)言對(duì)于C語(yǔ)言功能的支持是完全的,它不但具有這些功能,而且還能在其基礎(chǔ)上更加優(yōu)化這些強(qiáng)大的功能。在這里我們將會(huì)為大家介紹下其中的C++智能指針的相關(guān)應(yīng)用方法,以方便大家對(duì)這方面的理解。#t#

內(nèi)存泄露是C++程序員都頭疼的大問(wèn)題。C++缺乏像JAVA、C#一樣,擁有GC這么一項(xiàng)有利的武器,它將內(nèi)存管理的部分權(quán)限交給了程序員。雖然GC的存在節(jié)約了開(kāi)發(fā)、排錯(cuò)的時(shí)間與成本,但是C++為了追求運(yùn)行速度而20年來(lái)堅(jiān)決不予補(bǔ)充進(jìn)其標(biāo)準(zhǔn)。(題外話:C++通過(guò)加大開(kāi)發(fā)難度去換取執(zhí)行速度的做法,在現(xiàn)在看來(lái)不知是否能給與正面的評(píng)價(jià),還是留給將來(lái)再說(shuō)吧。)

從此,在堆上申請(qǐng)了內(nèi)存忘了釋放、所造成的內(nèi)存泄露的問(wèn)題就一直困擾著C++程序員。也許為了稍許彌補(bǔ)沒(méi)有垃圾回收器所造成的開(kāi)發(fā)門檻高,各大廠商開(kāi)發(fā)的C++庫(kù)中都像COM學(xué)習(xí)引入智能指針試圖解決部分目前存在的問(wèn)題。

C++智能指針是存儲(chǔ)指向動(dòng)態(tài)分配(堆)對(duì)象指針的類, 用于生存期控制, 能夠確保自動(dòng)正確的銷毀動(dòng)態(tài)分配的對(duì)象,防止內(nèi)存泄露。它的一種通用實(shí)現(xiàn)技術(shù)是使用引用計(jì)數(shù)(reference count)。智能指針類將一個(gè)計(jì)數(shù)器與類指向的對(duì)象相關(guān)聯(lián),引用計(jì)數(shù)跟蹤該類有多少個(gè)對(duì)象共享同一指針。每次創(chuàng)建類的新對(duì)象時(shí),初始化指針并將引用計(jì)數(shù)置為1;當(dāng)對(duì)象作為另一對(duì)象的副本而創(chuàng)建時(shí),拷貝構(gòu)造函數(shù)拷貝指針并增加與之相應(yīng)的引用計(jì)數(shù);對(duì)一個(gè)對(duì)象進(jìn)行賦值時(shí),賦值操作符減少左操作數(shù)所指對(duì)象的引用計(jì)數(shù)(如果引用計(jì)數(shù)為減至0,則刪除對(duì)象),并增加右操作數(shù)所指對(duì)象的引用計(jì)數(shù);調(diào)用析構(gòu)函數(shù)時(shí),構(gòu)造函數(shù)減少引用計(jì)數(shù)(如果引用計(jì)數(shù)減至0,則刪除基礎(chǔ)對(duì)象)。

說(shuō)到C++智能指針,我們一定要看看標(biāo)準(zhǔn)C++庫(kù)提供的“搞笑的”智能指針:auto_ptr。

標(biāo)準(zhǔn)庫(kù)中提供了C++程序的基本設(shè)施。雖然C++標(biāo)準(zhǔn)庫(kù)隨著C++標(biāo)準(zhǔn)折騰了許多年,直到標(biāo)準(zhǔn)的出臺(tái)才正式定型,網(wǎng)上評(píng)論C++標(biāo)準(zhǔn)庫(kù)時(shí)都說(shuō):“在標(biāo)準(zhǔn)庫(kù)的實(shí)現(xiàn)上卻很令人欣慰得看到多種實(shí)現(xiàn),并且已被實(shí)踐證明為有工業(yè)級(jí)別強(qiáng)度的佳作。”但目前的標(biāo)準(zhǔn)C++中,只有一種獨(dú)苗智能指針:std::auto_ptr。

auto_ptr指針是一個(gè)RAII對(duì)象,它初始化時(shí)獲得資源,析構(gòu)時(shí)自動(dòng)釋放資源(生命期結(jié)束).它的缺點(diǎn)數(shù)不勝數(shù):

1、auto_ptr要求一個(gè)對(duì)象只能有一個(gè)擁有者,嚴(yán)禁一物二主

2、缺少對(duì)引用數(shù)和數(shù)組的支持。

3、不可將auto_ptr對(duì)象作為STL容器的元素。C++標(biāo)準(zhǔn)明確禁止這樣做,否則可能會(huì)碰到不可預(yù)見(jiàn)的結(jié)果。(這一條暈死一大片)。

4、auto_ptr在被復(fù)制的時(shí)候會(huì)傳輸所有權(quán)

反正由此可見(jiàn):標(biāo)準(zhǔn)庫(kù)的智能指針就是無(wú)甚大用。

在這樣的情況下,C++標(biāo)準(zhǔn)委員會(huì)自然需要考慮引入新的智能指針。目前由C++標(biāo)準(zhǔn)委員會(huì)庫(kù)工作組發(fā)起的Boost 組織開(kāi)發(fā)了Boost系列智能指針。

在Boost中的C++智能指針有五種: scoped_ptr,scoped_array,shared_ptr,shared_array,weak_ptr.

前4種完全是針對(duì)標(biāo)準(zhǔn)庫(kù)中的auto_ptr提出解決方案,如:scope_ptr是針對(duì)“auto_ptr在被復(fù)制的時(shí)候會(huì)傳輸所有權(quán)”這一弱點(diǎn)提出的。***一種沒(méi)見(jiàn)過(guò),看名字像是弱引用智能指針,我懷疑是不是類似于JAVA中弱引用一樣,有待進(jìn)一步學(xué)習(xí)。

責(zé)任編輯:曹凱 來(lái)源: 博客園
相關(guān)推薦

2023-12-20 12:40:51

C++RAII編程

2010-12-17 10:07:59

2023-11-17 11:48:08

智能指針C++

2024-12-26 10:45:08

2021-09-09 17:05:36

C++智能指針語(yǔ)言

2024-01-24 11:44:44

C++智能指針開(kāi)發(fā)

2015-07-27 11:34:03

Linux內(nèi)核指針

2010-02-04 09:33:08

C++指針重載

2011-07-12 13:01:00

CC++

2024-03-01 16:43:48

C++11智能指針內(nèi)存

2010-02-06 17:39:52

C++ strtok

2010-02-05 16:46:58

C++ TinyXml

2010-01-27 14:18:41

Android智能指針

2021-08-11 09:01:48

智能指針Box

2021-12-21 15:31:10

C++語(yǔ)言指針

2021-07-29 06:09:05

萬(wàn)能指針C語(yǔ)言void

2010-02-03 15:27:26

C++ static

2010-02-04 13:39:44

C++數(shù)組參數(shù)

2010-02-04 14:29:45

C++ typenam

2010-02-06 16:39:45

C++ assert(
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 久久久久国产精品一区二区 | 亚洲欧美另类在线观看 | 国产1区2区在线观看 | 九九免费 | 色综合久久久久 | 521av网站 | 久久99精品久久久久久 | 欧美激情视频网站 | 性高湖久久久久久久久aaaaa | 精品久久av | 日本亚洲精品成人欧美一区 | 日韩在线播放网址 | 日韩精品久久久久 | 欧美精品在线一区二区三区 | 成年免费大片黄在线观看岛国 | 免费看a| 国际精品久久 | 亚洲经典一区 | 精品久久香蕉国产线看观看亚洲 | 欧美一级黄色免费 | 中文字幕第一页在线 | 国产精品久久久久久久久久久新郎 | 男女在线免费观看 | 亚洲精品视频免费看 | 成人国产一区二区三区精品麻豆 | av在线播放不卡 | 中文在线www | 喷潮网站| 欧美精品一区二区三区在线播放 | 91正在播放 | 一区二区精品视频 | 亚洲一区 中文字幕 | 久久久精品久久 | 国产日韩欧美激情 | 精品欧美一区二区三区久久久 | 国产激情免费视频 | 日韩免费一二三区 | 日韩三级一区 | 美女国产| 天天综合日日夜夜 | 狠狠干美女 |