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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

Effective C++ 小笔记:条款13-17(第三章)

發布時間:2025/6/15 c/c++ 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Effective C++ 小笔记:条款13-17(第三章) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?  常用的資源有:內存、文件描述器(file descriptor)、互斥鎖(mutex locks)、圖形界面中的字體和筆刷、數據庫連接、以及網絡sockets。這些資源一般動態創建和分配,也就是一個指針。不論哪一種資源,重要的是,當你不再使用時,必須將它還給系統。

?

條款13:以對象管理資源

  把資源放進對象里,我們便可以依賴C++的 析構函數 自動調用機制,確保資源被釋放。對象在作用域結束時,其析構函數自動對其所指資源(對象)的指針調用delete。?

  C++提供了2種用于管理資源的類,“智能指針” std::auto_ptr,和 “引用計數型智能指針” ?std::tr1::shared_ptr。它們叫做智能指針,但本質是pointer-like對象,成員變量是表征資源的指針。二者使用方法一樣:

?1?class?Investment?{?...?};   
?2?Investment*?createInvestment();?
?3?
?4?void?f()
?5?{
?6?????...
?7?????std::tr1::shared_ptr<Investment>?pInv1(createInvestment());???????
?8?????????????????????????//?pInv1?points?to?the?object?returned?from?createInvestment
?9?????std::tr1::shared_ptr<Investment>?pInv2(pInv1);????
10?????????????????????????//?both?pInv1?and?pInv2?now?point?to?the?object
11??????????????????????????????????
12?????pInv1?=?pInv2;??????//OK????????????????????
13?????...
14?}

?

?  auto_ptr不讓多個auto_ptr同時指向同一個對象。如果真的那樣,對象會被刪除一次以上,而那會導致“未定義行為”。為了預防這個問題,auto_ptr有一個不尋常的性質: 若通過copy構造函數或copy assignment操作符復制它們,它們會變成null,而復制所得的指針將取得資源的唯一擁有權。還記得嗎,STL容器要求其存儲的元素具有正常的復制行為,因此這些容器容不得auto_ptr。

  shared_ptr具有正常的復制行為。可存儲于STL容器。

  兩者在析構函數內都對資源指針執行delete,而不是delete[]。所以動態分配的數組用它們管理是個餿主意。vector和string幾乎總是可以取代動態分配得到的數組。

?  兩者有一個共同的名字,RAII對象。為防止資源泄露,請使用RAII對象。它們在構造函數中獲得資源,并在析構函數中釋放資源。通常,我們選擇shared_ptr,因為其復制行為正常、直觀。而auto_ptr復制動作會使他指向NULL。

  兩外,tr1::shared_ptr 允許當智能指針被建立起來時制定一個資源釋放函數(所謂刪除器,"deleter")綁定于智能指針身上(auto_ptr 就沒有這個能耐)。當引用次數為0時候,刪除器 被調用。?

  tr1::shared_ptr 支持定制型刪除器。可以被用于自動解除互斥鎖(mutexes, 見條款14)等等。?

?

條款17:以獨立語句將newed 對象置入智能指針

1?processWidget(std::tr1::shared_ptr<Widget>(new?Widget),?priority()); ??//非獨立語句
2?std::tr1::shared_ptr<Widget>?pw(new?Widget);????              //獨立語句
3?processWidget(pw,?priority());

?

?  1行中,編譯器要執行三個操作。其中兩個參數的計算次序編譯器先做什么是有彈性的。如果如果priority函數在new之后執行,并且函數出現異常,新生成的Widget對象將未置入智能指針,資源產生泄漏。2、3行則解決了這個問題。

轉載于:https://www.cnblogs.com/younes/archive/2010/03/08/1681074.html

總結

以上是生活随笔為你收集整理的Effective C++ 小笔记:条款13-17(第三章)的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 黄色视屏网站 | 欧美日韩欧美 | 91性高潮久久久久久久 | 中文字幕不卡在线观看 | 欧美熟妇另类久久久久久多毛 | 黑人精品一区二区三区 | 中文字幕素人 | 911美女片黄在线观看游戏 | 顶臀精品视频www | 精品成在人线av无码免费看 | 九九热在线播放 | 国产成人av无码精品 | 福利一区在线观看 | 欧美一级片免费 | 国产91国语对白在线 | 中文字幕一区二区精品 | 亚洲一页| 亚洲你懂得 | 国产制服丝袜在线 | 中文字幕影片免费在线观看 | 欧美激情欧美激情在线五月 | 毛片成人网 | 国产精品国产成人国产三级 | 国产精品日韩欧美一区二区三区 | 国产精品成av人在线视午夜片 | 日韩无码电影 | 国产一级自拍视频 | 国产亚洲精品女人久久久久久 | 豆花免费跳转入口官网 | www中文在线 | 日日噜噜夜夜狠狠久久丁香五月 | 黄色在线播放视频 | 色老头综合网 | 性の欲びの女javhd | 免费视频www在线观看网站 | 91麻豆精品国产91久久久久久 | 夜夜精品视频 | 国产精品一区免费观看 | 国产后入清纯学生妹 | 日本精品人妻无码免费大全 | 亚洲精品99久久久久中文字幕 | 在线视频免费播放 | 一级特黄aa | 亚洲在线免费 | 国产精品国产三级国产普通话对白 | 天天射日日 | 看国产毛片 | 免费久久视频 | 免费看污片的网站 | 日韩精品电影网 | 日韩欧美三区 | 一个色亚洲| 婷婷丁香九月 | 天天干天天上 | 亚洲日日夜夜 | 天天做天天摸天天爽天天爱 | av激情久久 | 午夜成人亚洲理伦片在线观看 | 国产高清不卡av | 日韩在线影视 | 综合五月婷婷 | 日本理论片| 成人免费网站视频 | 久久高清一区 | 浓精h攵女乱爱av | 国产理伦| 欧美在线xxxx| 国产伦精品一区二区三区视频我 | 亚洲快播| 天堂中文资源在线观看 | 黑人糟蹋人妻hd中文字幕 | 5566毛片| 黄瓜视频在线观看污 | 日韩av看片 | 国产四区 | 女人免费视频 | 色哟哟黄色 | www.色婷婷.com| 欧美一区二区三区网站 | 亚洲一区久久 | 国产又粗又大又长 | 高清人妖shemale japan | 意大利性荡欲xxxxxx | 美女被叉叉的影院 | 黄色a级片在线观看 | 天堂av资源| 久久久青草 | 老女人综合网 | 三级国产在线 | 宅男av | 91九色网站 | 中文人妻av久久人妻18 | 国产另类ts人妖一区二区 | 一区二区在线观看免费视频 | 国产国语videosex另类 | 欧美三根一起进三p | 欧美视频性 | 国产精品一区二区三区四区在线观看 | 人妻激情偷乱频一区二区三区 |