中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C++標準庫難點有哪些

發布時間:2021-11-29 16:46:13 來源:億速云 閱讀:110 作者:iii 欄目:編程語言

本篇內容主要講解“C++標準庫難點有哪些”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“C++標準庫難點有哪些”吧!

在C++標準庫中,有關缺省變量值的限制非常模糊。基于此,很多編譯器允許開發人員將缺省變量值包含在函數聲明,指向函數的指針和引用,成員函數的指針,以及typedef聲明中。

例外一種需要更好的內存控制的情況是:需要在有限資源的情況下長時間不間斷運行的程序。實時系統經常需要用最少的耗費來獲取有保證的可預期的內存。這也就導致了更好的內存控制的需要。

一般來說,這些程序都避免使用動態的內存分配,而使用特殊目的的內存分配器來管理有限資源。此外,還有一些情況下由于硬件或系統的要求,需要將對象放在指定的內存位置。這也需要進行定制的內存管理(通過重載new來加以實現)。

當分配內建(built-in)類型的對象、未包含用戶自定義的new操作符函數的類對象、任何類型的數組時,使用全局new操作符函數。當在類中自定義C++標準庫,分配該類對象的內存時,調用該類的new操作符。如下:

#include  #include  class Blanks  {  public:  Blanks(){}  void *operator new( size_t stAllocateBlock, char chInit );  };  void *Blanks::operator new( size_t stAllocateBlock, char chInit )  {  void *pvTemp = malloc( stAllocateBlock );  if( pvTemp != 0 )  memset( pvTemp, chInit, stAllocateBlock );  return pvTemp;  }  int main()  {  Blanks *a5 = new( 0xa5 ) Blanks;//創建對象Blanks,并且初試化為0xa5  return a5 != 0;  }

new操作符可以重載,而delete卻不行。因為等到需要釋放的時候,我們所能得到的就是一個指針。而且該指針可能不是原先的對象類型指針(有可能進行了類型轉換)。實際上,當使用new獲得一個指向一片內存的指針時,在該片內存前有一個指示器(indicator),記錄實際分配的內存數量。當調用delete時,可以獲知需要釋放的內存大小。數組的釋放(Deallocating Arrays):

 void f( )  {  X* p1 = new X[10];  //...  delete [] X;  }

為什么不使用delete [10] X;來釋放內存?Bjarne Stroustrup稱這種做法容易導致錯誤,而將記錄元素個數的任務放在delete的實現中了。

此外,C++標準庫中提供了一種智能型指針auto_ptr,這種指針可以幫助我們防止“被異常拋出時發生資源泄漏”。但是缺點是該智能型指針不能指向數組,因為其內部釋放內存是通過delete而非delete [] 來進行的。

所以,只能使用其來指向一個單個對象。模板部分是C++中比較難的部分,也是C++的魅力所在。

到此,相信大家對“C++標準庫難點有哪些”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

c++
AI

诸城市| 延川县| 武威市| 阜宁县| 虞城县| 龙南县| 桦川县| 司法| 兴文县| 珲春市| 嫩江县| 昭平县| 寿宁县| 客服| 中牟县| 舟曲县| 开鲁县| 确山县| 武定县| 北宁市| 许昌市| 宁河县| 建德市| 钟祥市| 眉山市| 仪陇县| 平昌县| 麦盖提县| 历史| 安达市| 房山区| 镇坪县| 蒲城县| 大埔县| 新兴县| 遂昌县| 临潭县| 兰溪市| 福海县| 卫辉市| 教育|