c++的學習路線:
c++同c的不同:(三大性質、庫)
抽象性、封裝性、繼承性、多型性;標準模板庫、物件導向程式設計… …
c++的i/o是以位元組流的形式實現的,流(stream)實際上就是乙個位元組序列。
命名空間:— 命名空間的使用
new/delete是c++語言的運算子
malloc/free是c++語言的標準庫函式不是運算子,不在編譯器控制許可權之內
new運算子根據物件的型別自動決定其大小
malloc要使用sizeof運算子指定分配的大小
new返回指向此型別的指標
malloc返回指向void*型別的指標,要型別強制轉換
int *p = new int; delete p;
int *p = (int *)malloc(sizeof(int) * 4)
int *p = new int [5]; delete p;
兩者申請和釋放要配對出現、free和delete釋放記憶體後,沒有把指標設定成null會導致「野指標」
定義引用時必須初始化;可以將乙個引用賦予給某個變數;常引用:保護傳遞給函式的資料不在函式中被改變c語言中沒有引用,c++中才有引用,引用一般用作函式的引數或者函式的返回值;提高使用效率,引用不佔儲存單元。
使用引用作為傳遞函式的引數,在記憶體中並沒有產生實參的副本,他是直接對實參操作。
如果輸入引數以值傳遞的方式傳遞物件,則宜改用「const &」方式來傳遞,這樣可以省去臨時物件的構造和析構過程,從而提高效率。
如果既要利用引用調高使用效率,又要保護傳遞給函式的資料不在函式中被改變,就應當使用常引用。
如果函式的返回值是乙個物件,有些場合用「引用傳遞」替換「值傳遞」可以提高效率,有些場合不可以。
非const引用只能繫結到該引用同型別的變數。int &p = 20; x 錯--型別不匹配
const引用可以繫結到不同但相關型別的物件,或者繫結右值。const int &p = 20; 對
型別不同—>儲存副本,占用空間,再次修改其值時,const int &p的值不變不允許返回區域性變數的位址—不允許返回的引用對應於乙個區域性變數(區域性變數在棧中)型別相同—>不占用空間
函式的四部分:返回型別、函式名、參數列、函式體內聯函式inline:解決執行效率問題(編譯時)基礎函式:內聯函式、函式過載、模板函式、友元函式
成員函式:構造/析構函式、常成員函式、靜態成員函式
適用於函式體不大、但被頻繁呼叫的函式的函式呼叫過載:(多型性)內聯函式不能有複雜的控制語句
遞迴函式不能是內聯函式,類中的函式都是內聯函式
內聯函式有與帶引數的巨集定義相同的作用和相似的肌理,但他消除了巨集定義的不安全性
同一作用域內,函式名相同,引數的個數或型別不同
帶預設引數值的函式:
形參的預設值必須在宣告中指定;預設值的定義應該從右到左;
注:形參的預設值不能為區域性變數
C 學習之從C到C
包含標頭檔案可以不加.h結尾,如iostream,一些常用的標頭檔案在引用時可以不加.h字尾,並在開頭增加c,如 include include include在c中的強制型別轉換為 int 3.5 而在c 中的強制型別轉換為int 3.5 更加清晰直觀。在 c 中,宣告乙個函式時,可以指定預設的輸...
從C到C 1 2 C 概述
toc 20世紀80年代,at t bell 貝爾 實驗室的bjarne stroustrup博士及其同事在c語言的基礎上成功開發出c 語言。c 語言是一種混合型語言,它保留了c語言所有的優點,同時又增添了物件導向的程式設計機制,我們可以將c 語言視為c語言的改進和擴充套件。基於c語言開發的c 語言...
C 之集合概述
集合簡單的說就是陣列的公升級版。他可以動態的對集合的長度 也就是集合內最大元素的個數 進行定義和維護!arraylist非常類似於陣列。也有人稱他為陣列列表,它的容量可以根據需要進行動態擴充,而它的索引也會根據集合容量的擴充套件而重新分配和調整。也就是說arraylist集合中的元素的下標是不確定的...