1. 程式人生 > >C++ 何時使用引用引數(一些指導原則)

C++ 何時使用引用引數(一些指導原則)

轉自:https://blog.csdn.net/rushkid02/article/details/7917131

使用引用引數的原因:

1. 程式設計師能夠修改呼叫函式中的資料物件

2. 通過傳遞引用而不是整個資料物件,可以提高程式的執行速度。

    當資料物件較大時(如結構和類物件),第二個原因最重要,這些也是使用指標引數的原因。這是有道理的,因為引用引數實際上是基於指標的程式碼的另一個介面。

    那麼什麼時候使用引用、什麼時候使用指標?什麼時候又應該按值傳遞呢?下面是一些指導原則:

對於使用傳遞值而不做修改的函式:

1.  如果資料物件較小,如內建資料型別或者小型結構,則按值傳遞。

2.  如果資料物件是陣列,則使用指標,因為這是唯一的選擇,並將指標宣告為指向const的指標。

3.  如果資料物件是較大的結構,則使用const指標或const引用,以提高執行效率。這樣可以節省複製結構所需的時間和空間。

4. 如果資料物件是類物件,則使用const引用。類設計的語義常常要求使用引用,這是C++增加引用特性的主要原因。因此,傳遞類物件引數的標準方式是按引用傳遞。

對於修改呼叫函式中資料的函式:

1. 如果資料物件是內建資料型別,則是用指標。如果看到諸如fixit(&x)這樣的程式碼(其中x是int型),則很明顯,該函式將修改x。

2. 如果資料物件是陣列,則只能使用指標。

3. 如果資料物件是結構,則使用引用或指標。

4.  如果資料物件是類物件,則使用引用。

 

 

 

 

 

 

 

 

 

為了提高效率,假如在你的程式當中,沒有需要用到結構或者類來進行傳參的話,那麼就直接min b,像你說的這樣用就好了,因為用指標的話多了一步間接定址的過程,反而讓程式執行時間更加長了(這個多了的時間,基本可以用ms為單位來計算)
但是有以結構或者物件來作為引數的函式時,應該用指標傳遞或者引用傳遞,假如是直接值傳遞的話,結構需要拷貝的時間,類則多了拷貝建構函式呼叫的時間,還要複製,最後可能還要呼叫解構函式,時間開銷很大,一個函式呼叫10次的話,就10倍的增加,所以大部分都是直接用指標來替代,方便,簡介,效率