4 c 學習記錄之引用及函式傳遞

2021-10-06 02:46:47 字數 2022 閱讀 3795

*星期二, 08. 五月 2018 09:10上午

*引用

引用就是別名.

int &rnum=num;.//rnum就是num的別名,對rnum的操作就是對numde 操作
引用就是別名常量,別名是外號,屬於誰就是誰的,不可更改;別名的值是資料,資料是可以修改的.

引用物件

human mike;

human &rmike=mike;//定義物件mike的別名rmike

但我們不能定義乙個類的別名,因為類human是乙個型別,他沒有具體的記憶體位址.

human &rhuman=human;//錯誤

int a;

int &ra;

ra=a;//錯誤

引用就如同常量,只能對其初始化,不能賦值.

**空引用:**指標進行刪除操作後,需要將他們賦為空,引用卻不需要這麼做,這是因為引用是原來物件的別名

###函式的引數傳遞

#####按值傳遞:之前學習的函式傳參凡是都是按值傳遞.

int a=3,b=4;

swap(int a,int b)//swap函式交換的是a,b的副本物件的值,當傳遞a和b的值給函式swap時,編譯器會自動在棧中建立該物件的副本物件.

cout<<"主程式中,交換後,a:"<按址傳遞:把位址作為參量傳遞給函式.

void swap(int *pa,int *pb);//swap函式宣告.*代表是指標,儲存兩個位址

int main()

拷貝建構函式 類x的拷貝建構函式的形式為x(x& x)。

當用乙個已初始化過了的自定義類型別物件去初始化另乙個新構造的物件的時候,拷貝建構函式就會被自動呼叫。也就是說,當類的物件需要拷貝時,拷貝建構函式將會被呼叫。以下情況都會呼叫拷貝建構函式:

乙個物件以值傳遞的方式傳入函式體

乙個物件以值傳遞的方式從函式返回

乙個物件需要通過另外乙個物件進行初始化。

如果在類中沒有顯式地宣告乙個拷貝建構函式,那麼,編譯器將會自動生成乙個預設的拷貝建構函式,該建構函式完成物件之間的位拷貝。

按別名傳遞:指標作為函式的接收引數不易閱讀,出錯率高,常用別名這種直接引用方式.別名即自身,更加易懂方便

void swap(int &ra,int &rb);//允許接收2個int 型變數,並用ra和rb分別作為他們的別名.接收兩個別名,引用運算子 .別名即自身,對引數a b的操作就是main中a ,b.

int main()

指標是間接訪問,引用是直接訪問,它是某個物件的別名,因此不用任何符號就可以直接讀取該物件的資料.

利用指標返回多值

int main()

int func(int a,int *b,int *c)

返回多個值並將其中乙個作為判斷值

int main()

int func(int a,int *b,int *c)

利用別名返回多個值

int main()

int func(int a,int &b,int &c)

C 學習筆記4 C 之bool型別

c 中的bool型別 c 在c語言的基本型別系統上增加了bool型別 c 中的bool可取的值只有true與false 理論上bool值佔乙個位元組 如果多個bool值定義在一起,可能各佔乙個bit,這取決於編譯器的實現 true代表真值,編譯器內部用1來表示 false代表非真值,編譯器內部用0來...

4 1c 學習記錄之傳遞物件

傳遞物件 按值來傳遞物件 預設呼叫複製建構函式 class a a func a one int main a func a one int main a func a one 假如我們將函式宣告為a func a one 那麼由於它返回的是物件而不是該物件的記憶體位址,因此在返回該物件時仍然需要呼...

C 學習記錄(15)函式(4)委託

委託 delegate 是一種可以把引用儲存為函式的型別。委託的宣告非常類似於函式,但不帶函式體,且要使用delegate 關鍵字。1.定義委託 delegate double processdelegate double param1,double param2 static double mul...