C 程式設計思想學習 資料抽象

2021-06-05 09:04:26 字數 1157 閱讀 5733

1、動態記憶體分配

c++使用關鍵字new動態分配記憶體。一般表示式為:new type;如,new unsigned char[bytes],type也可以是結構體或者類名;用new分配的記憶體必須用delete來釋放。如果,多次申請但是不釋放則到達一定程度,記憶體耗盡,會發生記憶體洩露。釋放時也要注意定的規則,如果釋放的是陣列則在陣列名前要加,例如:delete myarray。

2、由結構體向c++的轉變(這是本人自己定義的,如果有異議,可以提出)

由於c沒有提供命名空間,所有**都在乙個命名空間中。所以,命名衝突是非常多的,產生了好多問題。但我們卻發現,結構體中的變數卻不會與別的變數產生衝突(結構體將自己的成員變數的範圍鎖定在本結構體物件的域內。),所以,有人就像,我們只要將函式也放在結構體中作為結構體的成員函式。這樣不就解決了成員函式命名衝突這一問題了。這樣,結構體中不只包括了成員變數而且包括了操作這些成員變數的函式。這樣形式的結構體不就是乙個類嗎?所以,類就基於此產生了。

3、標頭檔案

標頭檔案是存放介面規範的地方。c++中造大專案最好的方法是採用庫,收集相關的函式到同一物件模組或庫中,並且使用同乙個標頭檔案存放所有這些函式的宣告。這樣可以避免隨手在檔案中宣告乙個函式,然後,而在標頭檔案中也宣告了乙個和這個函式同名同返回值的函式,而編譯器只看到這個檔案中的函式宣告,這樣如果程式設計師忘了,這樣可能造成適應錯誤(本來程式設計師想著是呼叫標頭檔案中所呼叫的函式,結果缺呼叫了,本函式中生命的函式)。所以,c++中將將所有函式的宣告都放在對應的在標頭檔案中。而在定義該函式以及使用該函式的檔案中包含此標頭檔案(用於檢查該函式的使用以及定義是否與宣告一致)。但在標頭檔案中不應該包含通過生成**或者建立變數而分配儲存的任何資訊。這是因為標頭檔案一般會包含在專案的幾個翻譯單元中,如果乙個識別符號在多於一處被分配儲存,那麼聯結器就會報多次定義的錯誤。

但是可能會出現多次宣告的問題。c++中允許對函式的重宣告,只要兩個宣告匹配即可,但是兩者都不允許重宣告結構體。所以,一般不將結構體的宣告放到標頭檔案中,但是如果一定要放到標頭檔案中,則需要使用預處理器指示的語句來做一定的判斷。

4、全域性作用域解析

編譯器解釋識別符號以及函式名時如果有乙個局域識別符號和全域性標示符同名,預設選擇局域識別符號,所以,為了讓編譯器選擇全域性識別符號,需要加作用域解析運算子「::「。

為個人學習c++程式設計思想時個人心得體會,所以,難免有不嚴謹之處,甚至有可能是錯誤的理解。如發現錯誤,或者疑問。歡迎提出討論,共同學習、進步。

C 程式設計思想學習 隱藏實現

1 c 中的訪問控制 public,private不用介紹,protected,可以被繼承的結構訪問。這裡重點一提的是protected是專為繼承而設計的。protected在所屬類的成員函式和在類的外部函式中對類的物件的可見性與private是一樣的 都不可見。而protected只有在繼承時才表...

C 程式設計思想學習筆記 常量

c 程式設計思想學習筆記 常量 一 全域性範圍的const使用 1 const的使用有兩種效果,一是生成編譯期常量,二是執行期常量。做為編譯期常量主要用作值替代,即取代c中的 define常量定義,一般用於設定陣列大小。此時不分配儲存空間,只在有extern限定或取位址時才會分配空間。做為執行期常量...

《Java程式設計思想》學習筆記 介面

介面和內部類為我們提供一種將介面與實現分離的更加結構化發方法 將介面從具體的實現中解耦使得介面可以應用於多種不同的具體實現,因此 具有更好的復用性 工廠方法模式,不同的產品可以有不同的實現,不同的工廠可以生成不同的實際產品物件。這樣,產品物件和工廠之間達到了完全的分離解耦,我們可以任意的更換工廠,以...