自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

C++智能指針應用方式體驗

開發(fā) 后端
C++智能指針種類繁多,應方式靈活,在實際編程中給我們帶來了非常大的好處。那么如何才能正確的應用呢?在這里將會進行詳細介紹。

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

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

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

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

說到C++智能指針,我們一定要看看標準C++庫提供的“搞笑的”智能指針:auto_ptr。

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

auto_ptr指針是一個RAII對象,它初始化時獲得資源,析構時自動釋放資源(生命期結(jié)束).它的缺點數(shù)不勝數(shù):

1、auto_ptr要求一個對象只能有一個擁有者,嚴禁一物二主

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

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

4、auto_ptr在被復制的時候會傳輸所有權

反正由此可見:標準庫的智能指針就是無甚大用。

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

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

前4種完全是針對標準庫中的auto_ptr提出解決方案,如:scope_ptr是針對“auto_ptr在被復制的時候會傳輸所有權”這一弱點提出的。***一種沒見過,看名字像是弱引用智能指針,我懷疑是不是類似于JAVA中弱引用一樣,有待進一步學習。

責任編輯:曹凱 來源: 博客園
相關推薦

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++智能指針語言

2024-01-24 11:44:44

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

2010-02-04 09:33:08

C++指針重載

2015-07-27 11:34:03

Linux內(nèi)核指針

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

2021-08-11 09:01:48

智能指針Box

2010-01-27 14:18:41

Android智能指針

2021-07-29 06:09:05

萬能指針C語言void

2021-12-21 15:31:10

C++語言指針

2010-02-03 10:11:17

C++動態(tài)數(shù)組

2010-02-04 13:39:44

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

2010-02-06 16:21:35

C++常規(guī)DLL

2010-02-04 14:29:45

C++ typenam
點贊
收藏

51CTO技術棧公眾號