節選自己c++ primer plus 5
使用引用參數的主要原因有兩個:
1.程序員能夠修改調用函數中的數據對象
2.通過傳遞引用而不是整個數據對象,可以提高程序的運行速度
當數據對象較大時(結構和類對象),第二個原因最重要。這些也是使用指針參數的原因。這是有道理的,因爲引用參數實際上是基於指針的代碼的咖一個接口。那麼,什麼時候應使用引用,什麼時候應使用指針呢?什麼時候又應按值傳遞呢?下面是一些指導原則:
對於使用傳遞的值而不作修改的函數:
1.如果數據對象很小,如內置數據類型或小型結構,則按值傳遞
2.如果數據對象是數組,則使用指針,因爲這是唯一的選擇,並將指針聲明爲指向const的指針。
3.如果數據對象是較大的結構,則使用const指針或const引用,以提高程序的效率。這樣可以節省複製結構的時間和空間。
4.如果數據對象 是類對象,則使用const引用。類設計的語義常常要求使用引用,這是c++新增這項特性的主要原因。因此,傳遞類對象參數的標準方式 是引用傳遞。對於修改調用函數中數據的函數。
5.如果數據對象是內置數據類型,則使用指針。如果看到諸如fixit(&x)這樣的代碼(其中x是int型),則很明顯,該函數將修改x.
6.如果數據對象是數組,則只能使用指針。
7.如果數據對象是結構,則使用引用或指針。
8.如果數據對象是類對象,則使用引用。
當然,這只是一些指導原則,很可能有充分的理由做出其他的選擇。例如,對於基本類型,cin使用引用,因此可以使用cin>>n,而不是cin>>&n。