C++術語俗解

C++做爲一種複雜的編程語言,其最晦澀的莫過於各個術語。程序員

如下就常用的術語,逐個俗解(特別聲明:爲了對術語的更好理解與記憶,僅表明我的的俗識,如有不妥之處望給予指正),分享共勉。算法

內存:一片計算機執行程序時能夠利用的物理空間。用心讀這句:計算機所作的一切都是對現實世界的模擬。所謂物理空間,即就是現實世界常說的地理空間。在計算機的模擬世界中,把切切實實客客觀觀存在的稱爲物理空間,相對於邏輯空間而言。買手機時,其中有一項重要參數爲運行內存,即就是手機操做系統執行程序時能夠利用的物理空間大小,而執行程序怎麼理解呢?好比你對着手機屏幕點了一下微信圖標,微信界面就打開了,操做系統啓動微信即執行程序。編程

變量:對內存區域,從邏輯上劃分紅一塊一塊,起的名稱。用心讀這句:計算機所作的一切都是對現實世界的模擬。內存區域能夠形象理解爲整套房子購房合同書上的實測面積大小,而一塊一塊能夠類比理解爲一塊公攤、一塊客廳、一塊餐廳、一塊廚房、一塊主臥、一塊次臥、還有一塊衛生間等等,所謂的公攤、客廳、餐廳、廚房、主臥、次臥、衛生間等等都是現實世界人們起的名稱,而變量是對內存區域從邏輯上劃分各個塊後起的名稱。或者還能夠再類比理解,把內存區域想象成一張大大的中國地圖(哦,對,就像一隻雞同樣),北京、天津、上海、重慶、河北、山西、遼寧、吉林、黑龍江、江蘇、浙江等等都是現實世界劃分各個塊後人們起的名稱,而變量是計算機語言對內存區域,模擬現實世界從邏輯上,劃分各個塊後起的名稱。數組

類型:把內存區域劃分爲塊的大小依據。假如,把中國比做一種類型,聲明一個這種類型的對象,那麼確定在地球上劃分爲一個像雞形狀的塊;同理,甘肅比做一種類型,聲明一個這種類型的對象,那麼確定在地球上劃分一個像啞鈴形狀的塊;陝西比做一種類型,聲明一個這種類型的對象,那麼確定在地球上劃分爲一個像鑰匙形狀的塊;河南比做一種類型,聲明一個這種類型的對象,那麼確定在地球上劃分爲一個像金魚形狀的塊。類比理解編程語言中的類型,win32系統下,int類型佔4個字節,double類型佔8個字節等等,意味着不一樣類型可能劃分塊的大小有所不一樣。瀏覽器

數組:有限個相同類型變量在物理空間連續存儲的一種類型。去掉定語,即數組是一種類型。其實,稍微打開思路想象一下,假如同一種類型的變量有不少個(有限的,好比十個,一百個等等),那麼爲了方便簡明表示應該如何表述?難道要int a1; int a2; int a3等等一直寫代碼到int aN; 嗎?對,人類沒有那麼傻,的確不須要,能夠簡化爲int a[N]; 一目瞭然,童嫂無欺,老小皆曉。即就表示有N個int類型的變量連續存儲於內存中。尤爲注意,數組是在內存中連續存儲的有限個同等大小塊的集合。用心讀這句:計算機所作的一切都是對現實世界的模擬。早上上班坐地鐵來的吧?地鐵的每節車箱類比爲一種類型,那麼一趟地鐵就有十來個同類型的車箱,並且是連續排在一塊兒。微信

結構:有限個不一樣類型變量在物理空間連續存儲的一種類型。去掉定語,即結構也是一種類型。其實,再稍微打開思路想象一下,假如編程語言須要描述一我的的特徵,有姓名、性別、身高、籍貫、家庭住址、身份證號碼等等特性,如今擬定姓名爲字符數組,性別爲int類型,身高爲double類型,籍貫爲枚舉類型,家庭住址爲字符串類型、身份證號碼爲字符數組等等,那麼,你們都知道咱中國最不缺人,須要描述這麼多人,難道每一個人都要把這些特徵寫一遍嗎?那樣,是否是程序員就不會失業了?那樣,是否是你們均可以成爲程序員了?那樣,設計C++編程語言的人是否是腦子抽風了?對,人類沒有那麼傻,的確不須要,能夠簡化爲person china[N]; 而person爲人的類型便可。尤爲注意,結構是在內存中連續存儲的有限個不一樣等大小塊的集合。編程語言

聯合:一種特殊的結構類型。特殊之處體如今什麼地方?先想一個實際問題,假如定義了一個結構體,這個結構體有十個成員變量,可是呢,當真正實際使用時候,每次咱們只使用結構體其中的一個變量,其餘變量對咱們都沒有實質性的意義,此情境下一個結構體對象就很耗物理空間,怎麼辦?聯合就應運而生了。聯合就是成員變量有且僅有一個有效的類型。尤爲注意,聯合體的大小由其全部成員變量中類型佔用內存最大的一個決定。到此爲止,數組結構聯合聯繫:結構是對數組的擴充,而聯合倒是對結構的收斂。函數

枚舉:一種建立符號常量的類型。生活中,赤、橙、黃、綠、青、藍、紫能夠理解爲符號常量,枚舉便是對有限個符號常量集合建立的一種類型。結合實際,一般一星期有七天能夠定義爲一種枚舉類型,或者一年有十二個月也能夠定義爲一種枚舉類型。枚舉類型的變量只能夠初始化爲枚舉符號常量。工具

指針:對內存地址這種類型特地起的別稱,即指針是一種類型。一個指針變量有雙重類型屬性,int型指針變量一則表示自己的值是個內存地址,二則表示此變量指向了一個int類型變量的起始地址。一個指針變量的值爲一個內存地址,一個內存地址通常狀況下爲一個變量(或對象)在內存中存儲的起始地址。指針變量的類型取決於指針指向變量的類型,指針指向變量的類型所佔內存的大小決定了指針變量從起始地址丈量內存區域的步長大小。好比,win32系統環境下,short類型指針每次從起始地址丈量2個字節,int類型指針每次從起始地址丈量4個字節,double類型指針每次從起始地址丈量8個字節。相比於變量名,指針更微觀,至關於從具體的物理空間角度探索對象的信息。只要定義一個對象,那麼這個對象信息確定是存儲在內存中的某一塊物理地址空間中,通常咱們經過對象名稱調用對象。指針即換了個角度,從對象信息存儲的物理地址位置塊直接調用對象。好比一個學生張三的學號爲080605112,能夠理解爲八年級六班五排十一座二號,通常狀況下,老師上課喊張三起來回答問題,也有另外一種狀況,老師能夠直接經過學號定位到這個具體位置的同窗(即張三)起來回答問題。spa

函數:一種完成特定功能的工具。一個函數爲了實現一種功能,一個函數是爲了實現一種客觀需求功能而設計的對應工具。用心讀這句:計算機所作的一切都是對現實世界的模擬。通俗一點說,函數其實就是一種工具。程序其實也很簡單的,別被某些老師(專門忽悠學生的人)把你嚇着了。函數是一個功能體。那麼,既然是一個功能體,就從現實中的某個例子開始分析一下:什麼是功能體?好比:一臺豆漿機,插上電它就能夠運做,那麼電資源就是它的運做條件,如同函數必需要放在main()函數內部調用是同樣同樣的。若是不插電,也就是說單個功能分析,能夠想象一下,豆漿機它要製造豆漿,製造豆漿確定要有原材料,對,那什麼是它的原材料呢?好,你可能很清楚,須要豆子。對頭,豆子是一類糧食,對嗎?OK?Do you understand?函數的參數實質上就是這個功能體所需的資源。只不過模擬現實,各自有了虛擬意義上賦予的類型,現實中人們不在乎這樣的概念而已。好,再接着分析,豆漿機把豆子放進去,而後插上電源,再打開機子電源,磨豆漿,過幾分鐘(其實這就是進程的經典概念)後,關掉電源,打開豆漿機,倒出來的就是你求之不得的豆漿。這樣子就好理解了,哦,那也就是說,函數的返回值就是所謂的這個功能體的功能實現的結果。

參數:形參,即形式參數,聲明對於函數功能體而言須要的資源類型及其名稱;實參,即實際參數,對形式參數進行初始化的賦值。

引用:某塊已肯定名稱內存的別名。儘管是個別名,但引用能夠「從一而終」,而不像某某居然會「見異思遷」。既然都已肯定了名稱,爲何還要有個別名呢?主要用於函數參數和返回值類型。

內聯函數:以空間的代價換時間的優點。日常所謂的函數即常規函數,而爲何須要內聯函數?好比正在讀一本專業書(內容中有專業術語),忽然提到一個很難理解的術語,想第一時間知道詞意,確定會上網查,在查這個詞以前,須要先記住當前讀到了多少頁第幾行,而後待把這個詞意查清楚弄明白以後,又回過神開始接着以前記錄的地方往下繼續讀。假設記錄中斷的頁數和行數用了一分鐘,因爲對瀏覽器使用不嫺熟,查詢這個詞花費了兩分鐘,理解揣摩詞意用了一分鐘,再回過神接着中斷記錄點開始繼續讀又耽擱了一分鐘,那麼整個一系列過程至關於使用了五分鐘。其實,這個假設的全流程正是操做系統對常規函數的調用過程,除理解詞意使用的一分鐘外,其他使用的四分鐘即處理函數調用機制的時間代價。試想爲了弄明白一個詞意,足足耽擱了四分鐘時間,而真正理解詞意只用了一分鐘時間,有什麼好的方式能夠提到閱讀的速度呢?好,最笨的方法(注意是最笨的方法,若是尚未想到這個方法,說明還不是最笨的人)就是把這個術語詞直接替換爲你查詢到並理解揣摩的那一句或幾句解釋語便可。這樣作的代價就是浪費了紙張,爭取到了時間上的優點。同理,相較於常規函數,內聯函數就這樣應運而生了。

:因爲內置類型不夠豐富,爲知足需求設計的一種自定義類型。結合上面類型的解釋理解類的概念,類是一種用戶自定義的類型。類的設計主要分爲兩部分,成員屬性和功能屬性即成員變量和功能方法。類是高度抽象的一個概念,面向對象編程的核心在於如何設計類。現實中人們所謂的水果便是一個類型,假如老婆讓你去買一斤水果,你知道買什麼嗎?水果是很抽象的一個概念,而具體是指香蕉?蘋果?梨?等等,能夠理解爲水果這種類型的對象而已。

臨時變量:也稱臨時對象,C++編譯器在須要時候臨時生成的變量(對象)。輕輕的來,悄悄的去,源代碼中根本看不到。那麼,人們是怎麼知道有臨時變量存在呢?軟件講究邏輯,邏輯推理出來的。吹得這麼神乎?哈哈,通常直觀看不見摸不着的東西都很神奇。那麼在何時須要呢?在兩種狀況下產生:對函數的形參進行初始化時的隱式類型轉換和一個函數返回對象時。

const引用參數:對於形參爲const引用的C++函數,若是實參與形參類型不匹配,則其行爲相似於按值傳遞。爲確保原始數據不被修改,將使用臨時變量來存儲值。

智能指針:有析構函數的類對象指針。對於通常的常規指針,到底在應用程序中該什麼時候何地釋放掉它所指向的內存成爲了致使C++程序內存泄露的一個大難題。

因而乎,程序員類比對象的人爲構建後自析構的命理對指針進行了包裝。若是一個指針是對象,則在對象過時時,它的析構函數會自動釋放掉它所指向的內存,即所謂的智能指針。

泛型編程:編寫獨立於數據類型的代碼。

模板:完成通用程序的工具。模板使得算法獨立於存儲的數據類型,而迭代器使得算法獨立於使用的容器類型。

容器:存儲同種類型值的單元。

算法:完成特定任務的處方。

迭代器:遍歷容器元素的對象,與遍歷數組的指針相似,可理解爲廣義指針。

 

Good  Good  Study,  Day  Day  Up.

順序  選擇  循環  總結

相關文章
相關標籤/搜索