1. 程式人生 > >C++筆記一:函數

C++筆記一:函數

bsp 重載 不同的 單純 效率 局部變量 好處 png 如意

                          再談C++函數

1:引用

2:默認參數

3:函數重載

4:函數模板

————————————————————————————————————————————————————————————————

1:引用

  引用是C++引入的新語言特性,是C++常用的一個重要內容之一,正確、靈活地使用引用,可以使程序簡潔、高效。
表示給變量起一個別名,二者共享相同的內存區域。類似同一個人具有不同的名字。

引用作為函數參數
1. 為了在函數內部可以修改實參。
2. 大型的結構體或對象作為函數參數時,為避免拷貝我們一般采用指針或引用傳遞參數



引用作為函數返回值
返回函數值,定義函數時需要在函數名前加&:具體的是在函數類型和函數名之間加上&即可
 返回引用類型的好處是不產副本,不需要拷貝。因為拷貝需要消耗大量的資源
註意:不能返回局部變量的引用。原因是局部變量會在函數返回後被銷毀

對引用的一些總結
  (1)在引用的使用中,單純給某個變量取個別名是毫無意義的,引用的目的主要用於在函數參數傳遞中,解決大塊數據或對象的傳遞效率和空間不如意的問題。
  (2)用引用傳遞函數的參數,能保證參數傳遞中不產生副本提高傳遞的效率,且通過const的使用,保證了引用傳遞的安全性
  (3)引用與指針的區別是,指針通過某個指針變量指向一個對象後,對它所指向的變量間接操作
程序中使用指針,程序的可讀性差;而引用本身就是目標變量的別名,對引用的操作就是對目標變量的操作。

參考代碼:

   技術分享技術分享技術分享技術分享

————————————————————————————————————————————————————————————————

(2)默認參數

  函數的默認參數值,即在定義參數的時候同時給它一個默認的初始值。在調用函數的時候,我們可以省略含有默認值的參數。也就是說,如果用戶指定了參數值,則使用用戶指定的值,否則使用默認參數的值。

默認參數的語法與使用:
(1)在函數聲明或定義時,給參數賦一個默認的值。
(2)在函數調用時,省略具有 默認值的參數。這時可以用默認參數來代替。
如果一個參數設定了缺省值,其右邊的參數都要有缺省值。
可以在函數聲明或函數定義中指定默認形參,但只能指定一個地方,不能在兩個地方同時指定
技術分享

技術分享

}

————————————————————————————————————————————————————————————————

(3)函數重載

  函數重載是指在同一作用域內,可以有一組具有相同函數名,不同參數列表的函數,這組函數被稱為重載函數
  重載函數通常用來命名一組功能相似的函數,這樣做減少了函數名的數量,避免了名字空間的汙染,對於程序的可讀性有很大的好處。
  需要註意的是:如果兩個函數參數列表相同,僅僅是返回值不同,這不是重載,編譯器在編譯的時候會報錯。

  10 + 20
  10.3 + 20.3
技術分享

————————————————————————————————————————————————————————————————

(4)函數模板

  所謂函數模板,實際上是創建一個通用函數,其函數返回值類型和形參類型不具體指定,用一個虛擬的類型來代替。這個通用函數就稱為函數模板
  函數模板的實例化

函數模板的定義形式是:
template <typename T>:其中template和typename都是關鍵字,保持不變,可變的只能是T
函數實現

與函數重載的比較
模板函數與函數重載有些類似,但不同之處也很明顯。
重載函數內部實現可以完全不同,但模板函數內部算法相同

技術分享

C++筆記一:函數