**先來看一段**吧
是不是很好奇為什麼可以是一樣的命名呢?在c中你見過嗎?
下來我們就一起看一下吧!!!
**1、概念:是函式的一種特殊情況,c++允許在同乙個作用域中宣告幾個功能類似的同名函式,這些同名函式的形參列表(引數個數、型別、順序)必須不同,常用來處理實現功能類似資料型別不同的問題。
————兩個過載函式必須在下列乙個或兩個方面有所區別:
(1)函式有不同引數。
(2)函式有不同引數型別,
2、函式的過載的規則:
(1)函式名稱必須相同。
(2)引數列表必須不同(個數不同、型別不同、引數排列順序不同等)。
(3)函式的返回型別可以相同也可以不相同。
(4)僅僅返回型別不同不足以成為函式的過載。
****
1、概念:引用不是新定義乙個變數,而是給已存在的變數取了乙個別名,編譯器不會為引用變數開闢記憶體空間,它和它引用的變數共用同一塊記憶體空間
型別& 引用變數名(物件名) = 引用實體;
void testref()
注意:上述型別必須和引用實體是同種型別的2、引用特性(1)引用在定義時必須初始化
(2)乙個變數可以有多個引用
(3)引用一旦引用乙個實體,再不能引用其他實體
3、使用場景
(1)作為函式形參
void swap(int& left, int& right)
(2)作為函式返回值
int& testrefreturn(int& a)
注意:不能返回棧空間上的引用3、引用和指標的區別(1)相同點底層的實現方式相同,都是按照指標的方式來實現的
(2)不同點
(1)引用在定義時必須初始化,指標沒有要求
(2)一旦乙個引用被初始化為指向乙個物件,就不能再指向其他物件,而指標可以 在任何時候指向任何乙個同型別物件
(3)沒有null引用,但有null指標
(4)在sizeof中含義不同:引用結果為引用型別的大小,但指標始
(5)終是位址*空間所佔位元組個數
(6)引用自加改變變數的內容,指標自加改變了指標指向
(7)有多級指標,但是沒有多級引用
(8)指標需要手動定址,引用通過編譯器實現定址
(9)引用比指標使用起來相對更安全
————*c語言中,函式傳參 有兩種方式*
(1)傳值
`void swap(int
left, int
right)
傳值:在函式呼叫過程中會生成乙份臨時變數,最終把實參的值傳遞給新分配的臨時變數即形參
————優點:避免了函式呼叫的***
————缺點:無法改變形參的值
如果想通過形參改變實參的值,只能通過指標傳遞
(2)傳址
void swap(int* pleft, int* pright)
指標可以解決問題,但不是很形象友好,不安全
是否有一種型別:可以向值一樣傳遞,同時又能達到指標的效果呢?
——————很顯然,我們上述的引用不就有這個功能嗎
void swap(int& left, int& right)
Julia之初體驗(十一)函式2
具有特殊名稱的運算子 一些特殊的表示式對應於具有非顯而易見名稱的函式的呼叫。expression calls a b c hcat a b c vcat a b c d hvcat a adjoint a i getindex a i xsetindex a.ngetproperty a.n xse...
C語言函式初體驗
1.函式的宣告有什麼用?答 所謂宣告 declaration 就是告訴編譯器我要使用這個函式,有時候,你可能會發現及時不寫函式的宣告,程式也是可以正常執行的。但如果你把函式的定義寫在呼叫之後,那麼編譯器可能就會找不著北了。函式必須 先定義,再呼叫 2.函式是否必須宣告才能使用?答 對於函式來說,必須...
C 函式過載 引用 內聯函式
2 函式過載 3 引用 4 內聯函式 在宣告或定義函式時,給函式的引數設定乙個預設值,當使用者對函式進行呼叫時,如果傳遞了實參,則使用使用者傳遞的實參 如果沒有傳遞則使用預設值。預設引數必須從右往左給出 不能在函式宣告和定義的位置同時給出 預設引數在提供時 常量 全域性變數 c語言不支援。相同作用域...