




已閱讀5頁,還剩1頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
const double *p; double *const p1; const double *const p2;有什么區(qū)別? const double *p; /*p是個(gè)const,意思是不能通過*p修改p指向的對(duì)象比如 double a=0.0; const double *p=&a; 那么*p=2.0是非法的 而如果有const double a=0.0;那么必須是 const double* 才可以指向a ,像double*p =&a;是非法的double *const p1; /p1是個(gè)const, p1的值不能改變,所以必須在定義p1的時(shí)候就初始化它:double *const p1=&某; 如果再有p1= 某地址; /這個(gè)就行不通const double *const p2; /p2是個(gè)const,*p2也是const ,就是p2 的值不能改變,也不能通過*p2改變p2所指向的對(duì)象的值一道C語言的例題:在C語言的編譯下,由于指針指向的地址,直接向地址修改值,導(dǎo)致值被修改。然而這段程序,在不修改程序代碼的情況下,使用C+進(jìn)行編譯,由于C+的編譯器做了大量的優(yōu)化工作,而直接導(dǎo)致值為100. 優(yōu)化工作為程序看到n的前面使用const做修飾,直接認(rèn)為n為常量,在接下來使用n的地方,直接使用這個(gè)值代替,而不直接再從內(nèi)存中n的地址處再取一遍n的值,所以我們看到的就是100.那么我們要怎么樣才能使n的值從地址處再取一遍呢?volatile的作用: 作為指令關(guān)鍵字,確保本條指令不會(huì)因編譯器的優(yōu)化而省略,且要求每次直接讀值. 一個(gè)定義為volatile的變量是說這變量可能會(huì)被意想不到地改變,這樣,編譯器就不會(huì)去假設(shè)這個(gè)變量的值了。精確地說就是,優(yōu)化器在用到這個(gè)變量時(shí)必須每次都小心地重新讀取這個(gè)變量的值,而不是使用保存在寄存器里的備份。上面的例題只是想說明C+會(huì)對(duì)常量進(jìn)行優(yōu)化,直接使用值進(jìn)行代替,而不再去內(nèi)存中取變量值。強(qiáng)制類型轉(zhuǎn)換在C語言中強(qiáng)制類型轉(zhuǎn)換很常見,但是在C+中強(qiáng)制類型轉(zhuǎn)換卻是很少見的,甚至很反感的。C+認(rèn)為強(qiáng)制類型轉(zhuǎn)換應(yīng)該出現(xiàn)在底層的代碼中,而不應(yīng)該出現(xiàn)在軟件開發(fā)中。C+認(rèn)為在軟件開發(fā)中不應(yīng)該出現(xiàn)強(qiáng)制類型轉(zhuǎn)換的,至少不應(yīng)該胡亂出現(xiàn)。C+提倡不要進(jìn)行類型轉(zhuǎn)換,直接設(shè)置正確的類型。在C+中進(jìn)行強(qiáng)制類型轉(zhuǎn)換可以使用以下四個(gè)函數(shù)實(shí)現(xiàn)。Static_cast用來進(jìn)行數(shù)值類型之間的轉(zhuǎn)換,或者有一方是void*指針類型之間的轉(zhuǎn)換。該運(yùn)算符把expression轉(zhuǎn)換為type-id類型,但沒有運(yùn)行時(shí)類型檢查來保證轉(zhuǎn)換的安全性。static_cast ( expression )Const_cast用于臨時(shí)去掉const或volatile限制,就是臨時(shí)將常量轉(zhuǎn)換成變量。就是在這個(gè)語句內(nèi)時(shí)const限制被去掉了,跳出這個(gè)語句,const限制仍然存在。用法:const_cast (expression)該運(yùn)算符用來修改類型的const或volatile屬性。除了const 或volatile修飾之外, type_id和expression的類型是一樣的。一、常量指針被轉(zhuǎn)化成非常量的指針,并且仍然指向原來的對(duì)象;二、常量引用被轉(zhuǎn)換成非常量的引用,并且仍然指向原來的對(duì)象;reinterpret_cast用于任意兩種指針類型之間的轉(zhuǎn)換或者是指針類型與數(shù)值類型之間的轉(zhuǎn)換。(最危險(xiǎn)的轉(zhuǎn)換,一般不使用)einterpret_cast (expression)type-id 必須是一個(gè)指針、引用、算術(shù)類型、函數(shù)指針或者成員指針。它可以把一個(gè)指針轉(zhuǎn)換成一個(gè)整數(shù),也可以把一個(gè)整數(shù)轉(zhuǎn)換成一個(gè)指針(先把一個(gè)指針轉(zhuǎn)換成一個(gè)整數(shù),在把該整數(shù)轉(zhuǎn)換成原類型的指針,還可以得到原先的指針值)。Dynamic_cast 用于賦值類之間的轉(zhuǎn)換dynamic_cast (expression)該運(yùn)算符把expression轉(zhuǎn)換成type-id類型的對(duì)象。Type-id必須是類的指針、類的引用或者void*;如果type-id是類指針類型,那么expression也必須是一個(gè)指針,如果type-id是一個(gè)引用,那么expression也必須是一個(gè)引用。dynamic_cast運(yùn)算符可以在執(zhí)行期決定真正的類型。如果downcast是安全的(也就說,如果基類指針或者引用確實(shí)指向一個(gè)派生類對(duì)象)這個(gè)運(yùn)算符會(huì)傳回適當(dāng)轉(zhuǎn)型過的指針。如果downcast不安全,這個(gè)運(yùn)算符會(huì)傳回空指針(也就是說,基類指針或者引用沒有指向一個(gè)派生類對(duì)象)。dynamic_cast主要用于類層次間的上行轉(zhuǎn)換和下行轉(zhuǎn)換,還可以用于類之間的交叉轉(zhuǎn)換。在類層次間進(jìn)行上行轉(zhuǎn)換時(shí),dynamic_cast和static_cast的效果是一樣的;在進(jìn)行下行轉(zhuǎn)換時(shí),dynamic_cast具有類型檢查的功能,比static_cast更安全。C+的頭文件實(shí)在C語言的頭文件基礎(chǔ)上去掉.h并在頭文件名開始出加上一個(gè)c即可。所以不能這么寫。邏輯運(yùn)算符and_eq、or_eq、xor_eq是關(guān)鍵字,在有一些電腦中沒有運(yùn)算符下,可以使用這些關(guān)鍵字代替。在為函數(shù)取名時(shí)不要使用這些關(guān)鍵字(注意點(diǎn))。New和deletenew 類型 (類型*)malloc(sizeof(類型)這兩種函數(shù)都是申請(qǐng)空間。new是C+中的,而malloc則是在C語言中的。這兩個(gè)函數(shù)是等效的。New還可以用來初始化剛開辟的空間Int* r=new int(100);/開辟一個(gè)存放整數(shù)的空間,并指定該整數(shù)的初值為100,返回一個(gè)指向該存儲(chǔ)空間的地址放入r中。new char10;/開辟一個(gè)存放字符數(shù)組(包括10個(gè)元素)的空間,返回首元素的地址C+告訴我們?cè)诨厥沼?new 分配的單個(gè)對(duì)象的內(nèi)存空間的時(shí)候用 delete,回收用 new 分配的一組對(duì)象的內(nèi)存空間的時(shí)候用 delete。我們一般在delete以后,將該釋放指針設(shè)置為NULL,應(yīng)為delete以后,該指針變?yōu)榱藨铱罩羔槪兊貌话踩?,將其變?yōu)榭罩羔槙?huì)安全一些。注意:不是用new申請(qǐng)的空間就不要去使用delete。用c的malloc來申請(qǐng)的空間要用free來釋放。必須配對(duì)才可以。注意:頭文件 string.h cstring string 區(qū)別1) 文件cstring,和string.h對(duì)應(yīng),c+版本的頭文件,包含比如strcpy之類的字符串處理函數(shù)2)文件string.h,和cstring對(duì)應(yīng),c版本的頭文件,包含比如strcpy之類的字符串處理函數(shù)3)文件string,包含std:string的定義,屬于STL范疇string.h是C語言中字符串操作函數(shù)的頭文件cstring是c+對(duì)C語言中的strcpy之類的函數(shù)申明,包含cstring之后,就可以在程序中使用C語言風(fēng)格的strcpy之類的函數(shù)。string是c+語言中string類模板的申明注意:在沒有使用new進(jìn)行初始化的情況下,我們不能保證其值為0.語句coutflush; 有什么功能?cout是輸出語句,flush是緩沖區(qū)的內(nèi)容,coutflush表示將緩沖區(qū)的內(nèi)容馬上送進(jìn)cout,把輸出緩沖區(qū)刷新。NothrowNothrow是在當(dāng)n的值即申請(qǐng)空間過大,超過其范圍時(shí),為了以防由于申請(qǐng)空間過大而導(dǎo)致的系統(tǒng)崩潰。加上nothrow會(huì)使即使n的值過大超過其申請(qǐng)空間的范圍也不會(huì)產(chǎn)生系統(tǒng)奔潰。在內(nèi)存不足時(shí),new (std:nothrow)并不拋出異常,而是將指針置NULL。標(biāo)準(zhǔn)的new頭文件可以定義普通的new,同時(shí),它也可以定義一個(gè)變體new操作符,這個(gè)操作符叫做nothrownew。普通的new:過去和現(xiàn)在 普通new一個(gè)異常的類型std:bad_alloc。這個(gè)是標(biāo)準(zhǔn)適應(yīng)性態(tài)。在早期C+的舞臺(tái)上,這個(gè)性態(tài)和現(xiàn)在的非常不同;new將返回0來指出一個(gè)失敗,和malloc()非常相似。 在一定的環(huán)境下,返回一個(gè)NULL指針來表示一個(gè)失敗依然是一個(gè)不錯(cuò)的選擇。C+標(biāo)準(zhǔn)委員會(huì)意識(shí)到這個(gè)問題,所以他們決定定義一個(gè)特別的new操作符版本,這個(gè)版本返回0表示失敗。使用時(shí)需要添加頭文件#include.指針在c+中,函數(shù)地址和成員地址用來輸出時(shí)都會(huì)賦予true。函數(shù)地址只能用來調(diào)用函數(shù),不能用來做其他事情。成員地址則只能用來訪問成員。一、 成員指針成員指針是C+中用于對(duì)類中成員進(jìn)行操作。成員指針的定義格式:成員類型 類名:*指針名=&類名:成員名;成員函數(shù)指針的定義格式: 成員函數(shù)返回類型 類名:*指針名 = &類名:成員函數(shù)名(參數(shù)表)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 岳麓區(qū)歷史面試題及答案
- 空調(diào)拆除施工方案
- 祛痘產(chǎn)品推銷方案
- 2026版《全品高考》選考復(fù)習(xí)方案生物733 非選擇題強(qiáng)化練(三) 含答案
- 工程超市投標(biāo)方案
- 廠房拆除施工方案
- 2026版《全品高考》選考復(fù)習(xí)方案物理01 第3講 重力、彈力和摩擦力 含答案
- 新航機(jī)務(wù)面試題及答案
- 面試題團(tuán)隊(duì)管理及答案
- 視覺應(yīng)用面試題及答案
- 英語教師進(jìn)城選調(diào)考試試題及答案
- 2025年一級(jí)建造師《市政實(shí)務(wù)》考點(diǎn)精粹
- 滴灌帶造顆粒合同協(xié)議
- 學(xué)校總務(wù)后勤工作總結(jié)模版
- 《蛇咬傷應(yīng)急處理》課件
- 2025年錨栓市場發(fā)展現(xiàn)狀
- 養(yǎng)豬場建設(shè)項(xiàng)目可行性研究報(bào)告(模板范文)
- 2025年四級(jí)中式烹調(diào)師(中級(jí))職業(yè)技能鑒定參考試題庫(含答案)
- 夜間作業(yè)安全培訓(xùn)培訓(xùn)資料
- 中藥知識(shí)講解課件
- 施工資源需求計(jì)劃與調(diào)配策略
評(píng)論
0/150
提交評(píng)論