亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

淺析C++的特殊工具與技術

2020-01-26 15:56:07
字體:
來源:轉載
供稿:網友

一、優化內存
1、策略:預先分配用于創建對象的內存,需要時在預先分配的內存中構造每人新對象。

2、allocator類;a.destroy(p),運行T*指針p所指對象的析構函數。注意,運行析構函數并不釋放對象所在的內存,要想釋放內存就要調用函數a.deallocate(p,n),釋放然為p的T*指針中包含的地址處保存T類型的n個對象。

3、operator new函數與operator delete函數;注意與new和delete表達式區別。operator new和operator delete是函數,而new和delete是表達式。它們都返回void*指針而不是類型化的指針。使用allocator比直接使用operator new和operator delete函數更為類型安全。標準庫函數operator new和operator delete可以說是allocator的allocate和deallocate成員的低級版本,它們分配但不初始化內存。注意,調用operator delete函數不會運行析構函數,它只釋放指定的內存。

4、定位new表達式;定位new表達式在已分配的原始內存中初始化一個對象,它與new的其他版本的不同之外在于,它不分配內存。相反,它接受指向已分配但未構造內存的指針,并在該內存中初始化一個對象。定位new表達式使我們能夠在特定的、預分配的內存地址構造一個新對象。表達式為new (place_address) type或new (place_address) type(initialzer-list),place_address必須是一個指針,initial-list是一個可為空的初始化列表,例如:new (sp)string(b,e)。定位new表達式初始化一個對象的時候,它可以使用任何構造函數,并直接建立對象。

5、創建新的對象的時候,可以在這個預先分配的空間構造對象。釋放對象的時候,將它們放回預先分配對象的塊中,而不是將內存真正返回給系統。所以可以通過定義(或繼承)自己的名為operator new和operator delete的成員,來管理自身類型的內存,否則,調用這些函數的標準庫版本。因為在構造對象前要使用operator new在對象撤銷后使用operator delete所以,成員new和delete函數必須是靜態的。

二、運行時類型識別
1、通過運行時類型識別(RTTI),程序能夠使用基類的指針或引用來檢索這些指針或引用所指對象的實際派生類型。通過兩個操作符提供RTTI:

*typeid 操作符,返回指針或引用所指對象的實際類型
*dynamic_cast操作符,將基類類型的指針或引用安全地轉換為派生類型的指針或引用

2、dynamic_cast操作符;用法:dynamic_cast<Type */&>(val),Type是轉換的目標類型,val是基類類型的對象。
如,if(Derived *derivedPtr==dynamic_cast<Derived*>(basePtr){...}。

dynamic_cast操作符執行的驗證必須在運行時進行。如果轉換到指針類型失敗,則dynamic_cast的結果為0;如果轉換到引用類型的dynamic_cast失敗,則拋出一個bad_cast類型的異常。

3、typeid操作符;表達式:typeid(e),e是任意表達式或者是類型名。typeid操作符可以與任何類型的表達式一起使用。typeid最常見的用途是比較兩個表達式的類型,或者將表達式的類型與特定類型相比較。例如:if(typeif(*derivedPtr)==typeid(Derived);

三、類成員的指針
1、聲明成員指針。成員指針只應用于非static成員,static成員指針是普通指針。

2、定義數據成員的指針。既要表明成員的類型,又要表明成員所屬的類。
如string Screen::*,是指向Screen類的string成員的指針。

3、定義成員函數的指針。

一致的匹配要求:
*函數形參的類型和數目,包括成員是否為const
*返回類型
*所屬類的類型
如:char (Screen::*)()const

4、使用類成員的指針;
*成員指針解引用操作符(.*)從對象或引用獲取成員
*成員指針箭頭操作符(->*)通過對象的指針獲取成員
可以定義一個數組保存指向每個光標移動函數的指針。

更多內容,見上篇:指向類成員的指針并非指針。或參考《C++必知必會》

四、嵌套類
在一個類內部定義另一個類。嵌套類是獨立的類,基本上與它們的外圍類不相關,因此,外圍類和嵌套類是互相獨立的。外圍類對嵌套類的成員特殊訪問權,并且嵌套類對其外圍類的成員也沒有特殊訪問權。嵌套類的名字在其外圍類的作用域中可見,但在其他類作用域或定義外圍類的作用域中不可見。嵌套類可以具有與非嵌套類相同種類的成員。

1、嵌套在類模板內部的類是模板;

2、定義;在其類外部定義的嵌套類的成員,不能定義在外圍類內部,嵌套類的成員不是外圍類的成員。為了在外圍類的外部定義類體,必須用外圍類的名字既定嵌套類的名字。注意,我們仍然必須在外圍類的定義體中聲明嵌套類。嵌套類中聲明的靜態成員的定義也放在外層作用域中。

3、嵌套類型對象只包含嵌套類型的成員,不能使用this獲取外圍類的成員。外圍類也不能直接調用嵌套類中的成員。嵌套類可以直接引用外圍類的靜態成員、類型名和枚舉成員。

五、聯合:節省空間的類;
1、一個union對象可以有多個數據成員,但在任何時刻,只有一個成員可以有值。

2、為union對象分配的存儲量至少與union的最大煩數據成員一樣大。

3、union不能作為基類使用,成員能為虛函數,也不能定義構造函數、析構函數或賦值操作符的類類型成員。

4、為了知道union對象中的值,通常會把一個枚舉型的變量作為union對象的判別式。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美激情18p| 中文字幕亚洲欧美日韩在线不卡| 毛片精品免费在线观看| 日韩av免费看网站| www日韩中文字幕在线看| 欧美激情乱人伦一区| 日韩**中文字幕毛片| 91精品综合视频| 欧美视频中文字幕在线| 亚洲精品99久久久久中文字幕| 国产精品日日摸夜夜添夜夜av| 国产日韩欧美黄色| 欧美一乱一性一交一视频| 2019中文字幕免费视频| 精品成人久久av| 国产精品va在线| 国产一区二区日韩精品欧美精品| 精品国产一区二区三区久久狼5月| 欧美午夜视频一区二区| 亚洲午夜激情免费视频| 国产精品久久久久免费a∨大胸| 亚洲影影院av| 96国产粉嫩美女| 国产高清在线不卡| 国产精品美女www爽爽爽视频| 亚洲第一天堂av| 日韩欧美亚洲范冰冰与中字| 亚洲欧美一区二区精品久久久| 国产亚洲精品久久久优势| 美女撒尿一区二区三区| 国产999精品久久久| 色悠悠久久88| 亚洲人成亚洲人成在线观看| 亚洲级视频在线观看免费1级| 国产精品旅馆在线| 91国内在线视频| 精品亚洲永久免费精品| 欧美日韩综合视频网址| 成人网在线视频| 中文字幕精品在线视频| 精品色蜜蜜精品视频在线观看| 日韩高清a**址| 欧美日韩色婷婷| 国内精品久久久久久久| 中文字幕亚洲一区二区三区五十路| 亚洲缚视频在线观看| 美女999久久久精品视频| 亚洲欧洲黄色网| 亚洲第一av网| 久久这里只有精品99| 亚洲高清久久网| 国产专区欧美专区| 亚洲欧美制服丝袜| 在线亚洲男人天堂| 91欧美激情另类亚洲| 亚洲国产精品久久| 国产精品99久久久久久久久| 日韩中文在线中文网在线观看| 国模叶桐国产精品一区| 亚洲人成电影网站色www| 在线播放国产精品| 久久久精品中文字幕| 热久久免费视频精品| 欧美激情欧美狂野欧美精品| 欧美孕妇毛茸茸xxxx| 国产欧美中文字幕| 欧美日韩国产二区| 久久精品91久久香蕉加勒比| 欧美日韩精品在线| 亚洲va欧美va国产综合剧情| 国产精品十八以下禁看| 国产91精品久久久久久久| 久久人人爽人人爽人人片av高请| 黑人巨大精品欧美一区二区一视频| 欧美黑人xxxx| 亚洲精品av在线| 亚洲欧洲午夜一线一品| 欧美成在线观看| 久久99亚洲热视| 欧美高跟鞋交xxxxhd| 亚洲性猛交xxxxwww| 在线日韩av观看| 国产精品视频男人的天堂| 日韩在线视频免费观看高清中文| 亚洲美女精品成人在线视频| 久热精品视频在线| 在线观看国产欧美| 国内精品视频一区| 欧美成人精品在线观看| 欧美肥老太性生活视频| 亚洲免费电影在线观看| 国语对白做受69| 国产精品一二三视频| 亚洲视频第一页| 国产精品夜色7777狼人| 国产精品亚洲美女av网站| 亚洲日韩欧美视频| 91高清视频免费观看| 精品国产一区二区三区久久狼5月| 久久精品国产91精品亚洲| 91精品国产色综合久久不卡98| 亚洲成人久久久| 一夜七次郎国产精品亚洲| 中文字幕一精品亚洲无线一区| 欧美国产亚洲精品久久久8v| 久久久久久国产精品久久| 国产香蕉精品视频一区二区三区| 亚洲成年人影院在线| 性色av一区二区咪爱| 国产精品高清在线| 国内精品久久久久久久| 浅井舞香一区二区| 国产精品激情av电影在线观看| 中文字幕视频一区二区在线有码| 国产小视频国产精品| 亚洲精品720p| 国产91成人video| 国产做受69高潮| 日韩欧美一区视频| 精品国产一区二区三区在线观看| 国产日韩av高清| 亚洲精品一二区| 在线视频日韩精品| 国产成人精品日本亚洲专区61| 久久福利视频导航| 欧美成人精品一区二区三区| 日韩精品在线影院| 亚洲小视频在线观看| 日韩小视频在线观看| 中文国产亚洲喷潮| 黄色一区二区在线| 欧美黑人xxxx| 亚洲精品福利资源站| 国产精品久在线观看| 欧美自拍视频在线| 日韩中文字幕在线播放| 97久久国产精品| 国产69精品久久久| 日韩精品一区二区视频| 欧美性xxxx极品高清hd直播| 日韩最新av在线| www.久久久久久.com| 欧美尺度大的性做爰视频| 日本一区二区在线免费播放| 亚洲精品久久久久| 亚洲美女免费精品视频在线观看| 97视频在线观看网址| 亚洲free性xxxx护士白浆| 午夜精品视频网站| 精品亚洲aⅴ在线观看| 91黑丝在线观看| 久久国产一区二区三区| 久久91精品国产91久久久| 亚洲国产91精品在线观看| 九九热99久久久国产盗摄| 欧美精品免费播放| 91精品美女在线| 久久久久久高潮国产精品视| 日韩成人av网址| 成人动漫网站在线观看| 日本午夜精品理论片a级appf发布| 久久精品久久精品亚洲人| 亚洲mm色国产网站| 91免费精品视频|