多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > php教程 > C++ 編程思想(第一卷)閱讀總結

C++ 編程思想(第一卷)閱讀總結

來源:程序員人生   發布時間:2015-01-22 08:50:26 閱讀次數:3626次

最近工作閑翻閱了之前買f《C++編程思想》這里貼上我認為對我最有幫助的部份,1來留給自己溫習看,另外一方面也和小火伴們分享下:

1 OPP相干

1.1、每一個對象都有1個類型,OOP中class 和type是同義詞,在面向對象的程序設計中,我們所做的工作實際上就是創造新的數據類型,程序員定義class 是為了與具體問題相適應,而不是被迫適用已存在的數據類型。

1.2、當用<>來指定文件時,預處理器以特定的方式來尋覓文件,1般是環境中或編譯器命令指定的某種尋覓路徑;當采取""指定文件時,通常是從當前目錄開始尋覓,如果文件沒有找到則按<>方式進行尋覓。

2 C++總的C

2.1、整數類型范圍從小到大為:short int->int->long int。

         浮點類型范圍從小到大為:float->double->long double;

         unsigned 數不保存符號,因此有1個過剩的位可用,所以它能存儲比signed數大兩倍整數

2.2、main()的內部和外部定義的變量寄存在不同的區域;數據和函數也存在不同區域

2.3、C++編程的1般原則是在定義時進行初始化,const 變量必須有初始值

2.4、enum可以提高程序清晰度,采取union可以節省內存,所有union 變量地址都是1樣的

2.5、 采取預處理器來完成代碼調試功能,具體實現以下:

#define NDEBUG //...... #ifdef NDEBUG /* debugging code here*/
...... #endif
2.6、C++允許將任何類型的指針賦給void* ,但是不允許將void* z指針賦值給其他任何類型的指針。

2.7、同文件是我們和庫用戶之間的合約,合約描寫了庫中的數據結構,為函數調用規定了參數和返回值,頭文件中只限于申明,為了不頭文件的內容的屢次申明,我們可以采取以下方式避免:

#ifndef HEADER_FLAG #define HEADER_FLAG //Type declaration here ..... #endif
一樣為了不命名空間的錯亂,頭文件中絕不會看到using

2.8、如果程序員想允許顯式讓不屬于當前結果的1個成員函數訪問當前結構的對象時,可以借助friend 修飾符,friend 必須在1個結構內部聲明

3 、C++特點:

3.1、class與struct 的區分在于class的成員默許是private,而struct的成員默許是public;

3.2、C++的安全性體現在初始化和清除兩個方面,用構造函數確保初始化,用析構函數確保清除

3.3、C++中宏被內聯函數(inline function)代替,這樣既保證了高效性(成員函數和預處理器宏1樣高效)也保證了安全性(當調用內聯函數時,編譯器首先確保調用正確,即所有的參數類型都滿足,宏定義在預處理中,不能進行檢查)。

任何在類中定義的函數都自動的成為內聯函數;

使用內聯函數的目的是減少函數調用的開心,但是如果函數交大,由于需要在調用函數的每處重復賦值代碼,這樣會使得代碼膨脹,因此小函數作為內聯函數比較理想

3.4、static使得變量存于靜態數據區中,而不是堆棧中。全局靜態對象的構造函數在main()之前調用,并且在退出main()后調用析構函數;

3.5、 關鍵字namespace如何class、struct、enum和union1樣把它們的成員的名字放到不同的空間去,但namespace與class 、struct、union和enum有著明顯的區分:

        (1)namespace只能在全局范圍內定義,但他們之間可以相互嵌套;

        (2)namespace定義的結尾沒必要隨著分號;

(3)1個namespace可以在多個頭文件中用1個標識符來定義;

(4)不能像class1樣去創建1個名字的實例;

(5)namespace可以用另外一個名字作為他的別名;

3.6、 & 在C++表示援用,援用可以理解為1個奇特的指針,這個指針的優點是沒必要懷疑它是不是初始化,援用的使用規則以下:

(1)利用創建是必須初始化;

(2)1個援用指向1個對象后不可轉變成另外一個對象的援用;

(3)不能NULL的援用

最常常看見援用的地方是函數參數和返回值中,當援用被用作函數參數是,在函數內任何對援用對象的修改將在函數外參數產生變化,固然也可傳遞指針來做相同的事情,但援用具有更清晰的語法。

3.7、拷貝構造函數(copy-constructor)是1種特殊的構造函數,需要援用來實現從現有的相同類型的對象中產生新的對象。編譯器使用拷貝構造函數通過值傳遞的方式在函數中傳遞和返回對象

3.8、使用delete void * 可能會出錯,在刪除之前必須把它轉為適當的類型,否則將會丟失內存;

3.9、C++確保在進入新類的構造函數體之前調用酥油的其他的構造函數,這樣所有子對象的成員函數所做的任何調用總是轉到這個被初始化的對象中,

MyType::MyType(int i):Bar(i){///....}

4 C++ 中的多態

4.1、多態永久產生在派生類中與基類之間,C++通過virtual函數和晚綁定(late binding)實現;

如果1個函數在基類中被申明為virtual ,那末所有的派生類中它都是virtual,可以對基類中的虛函數進行重寫;

在每一個帶有虛函數的類中,編譯器秘密放置了1個指針(vpointer)指向該對象的VTABLE(編譯器對每一個包括虛函數的類創建1個表:VTABLE)


編譯器從Instrument指針開始,該指針指向該對象的起始地址,對所有的Instrument或派生對象,他們的vptr都存在相同的位置(常常在對象的開頭),所以編譯器能夠取出該對象的vptr,vptr指向vtable的起始地址,所有的vtable都有相同的順序,如圖。play()第1個,what()第2個;

5、C++模板(template)

5.1、template告知編譯器,隨后定義將錯做1個或多個未指明的類型,當這個模板產生實際類代碼時,必須指定這些類型使得編譯器可以替換他們。



生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 精品久久久99大香线蕉 | 亚洲成在人线久久综合 | 最新中文字幕在线视频 | 亚洲理论欧美理论在线观看 | 琪琪see色原网中文 琪琪理论影院2018中文版 | 国产亚洲精品线观看77 | 亚洲成a人片在线播放观看国产 | 国内自拍视频在线观看 | 九九精品视频在线播放8 | 五月婷婷伊人 | 亚洲欧美日韩在线精品一区二区 | 无遮挡很爽很污很黄很色的网站 | 国语对白清晰好大好白在线 | 中文字幕日韩精品中文区 | 国产亚洲欧美日韩在线看片 | 欧美激情伊人 | 国产欧美日韩另类一区乌克兰 | 三级视频在线 | 成人精品国产 | 午夜在线视频观看 | 香蕉久久ac一区二区三区 | avtt亚洲 | 成人性色生活片免费看爆迷你毛片 | 中文字幕在线播放量 | 国产欧美日韩在线观看一区二区三区 | 波多野结衣一区二区三区四区 | 日本国产亚洲 | 狠狠干天天色 | 亚洲欧美日韩综合 | 日本一区二区三区不卡在线视频 | 国产l精品国产亚洲区久久 国产mv在线观看 | 色聚网久久综合 | 欧美黑人两根巨大挤入 | 秋霞理论在线视频 | 伊人精品网 | 亚洲天码中文字幕第一页 | 视频在线欧美 | 亚洲 欧美 国产 中文 | 午夜在线视频国产极品片 | 国内自拍视频在线播放 | 国产呦精品一区二区三区网站 |