C++入門

從C到C++:

首先來了解一下概念:如果學習過java可以和java來對比學習

引用:

類型名 & 引用名=某變量名

int n=4; int & r=n; //r引用了n,r的類型是int &

引用只能引用變量,不能引用常量或者表達式

引用的理解可以參考java中的引用,實際上他們都是使用不同的名字去操作同一個地址的值

eg:可以利用引用來交換值

引用作爲函數的返回值:可以通過函數的調用來實現對變量的修改

引用前面加上const,就是常引用(不能通過常引用去修改它所引用的值)

 

const關鍵字:

用來定義常量,它可以代替define,因爲,const有類型,所以可以確保安全

定義常量指針:不可通過常量指針來修改其指向的內容

        常量指針不能賦值給非常量指針(通過強制轉換可以實現)

        非常量指針能賦值給常量指針

 

動態內存分配:

方法一:

    P=new T;

T是任意的類型名,P是類型爲T* 的指針,動態分配出一個大小爲sizeof(T)字節的內存空間,並且將該空間的起始地址複製給P

方法二:

    P=new T[N];

P還是類型爲T *的指針

 

通過delete釋放變量空間

delete 指針:該指針必須指向new出來的空間

通過delete釋放分配的數組空間

delete [] 指針:該指針必須指向new出來的數組

new出來的空間必須通過delete來刪除,不會自動調用析構函數(後面會有講解)

 

內聯函數:

編譯器處理內聯函數的語句時,是將整個函數的代碼插入到調用語句處,而不產生調用函數的語句

在函數的定義前面加“inline”

 

函數重載:

名字相同,參數個數或者參數類型不同 

定義函數時可以讓最右邊的連續若干個參數有缺省值

 

類和對象:

類定義出來的變量,也成爲類的實例,就是我們所說的對象

對象的大小隻包含它的成員變量的大小

 

成員:

類的成員函數可以和類的定義分開來寫,在類的裏面要寫這個函數的聲明

類成員的訪問範圍:

private:私有成員,只能在成員函數內訪問

public:公有成員,可以在任何地方訪問

protected:保護成員

如果前面沒有標註,則默認爲私有的

成員函數可以重載及參數缺省

 

構造函數:

和java構造函數相似,名字相同,沒有返回值

對象生成時構造函數自動被調用

 

複製構造函數:

只有一個參數,就是同類對象的引用,如果沒有定義複製構造函數,那麼編譯器就會默認生成複製構造函數,它的功能就是來完成複製功能

eg:

使得c2==c1,起始它會返回該類的引用給c2

還有一種寫法 Complex c2=c1;和上面的寫法是相似的

 如果一個函數的參數時類A的對象,那麼該函數調用時,類A的賦值構造函數將會被調用,起始就是形參作爲引用指向實際參數所指向的地方

如果函數的返回值是類A的對象,則函數返回時,A的賦值構造函數被調用

對象賦值並不導致賦值構造函數被調用

 

類型轉換構造函數

定義轉換構造函數的目的是實現類型的自動轉換

實際上就是 c1=9 時,9被自動的轉換爲一個對象,調用的就是Complex(int i)這個構造參數,然後創建了一個Complex的臨時對象,再將這個對象賦值給c1

 

析構函數:

名字和類名相同,在前面加'~',沒有參數,沒有返回值,一個類最多隻有一個析構函數,析構函數在對象消亡的時候被自動調用

對象數組生命週期結束時,對象數組的每個元素的析構函數都會被調用 

eg:

 

注意:new出來的東西只有delete了纔會消亡,否則不會消亡,就不會調用析構函數

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章