天天看點

函數參數是指針 OR 引用?該不該加const?

  • 先來說說指針與引用的差別:

1.指針可以在任何時候被初始化,引用在建立時必須初始化。

函數參數是指針 OR 引用?該不該加const?

2.一旦引用被初始化為一個對象,就不能被指向到另一個對象。指針可以在任何時候指向到另一個對象。

函數參數是指針 OR 引用?該不該加const?
函數參數是指針 OR 引用?該不該加const?

3.不存在空引用。引用必須連接配接到一塊合法的記憶體。

4.無論傳值還是傳指針,函數都會生成一個臨時變量,但傳引用時,不會生成臨時變量。引用并不産生對象的

副本,也就是參數傳遞時,對象無須複制。

5.引用在定義時不可加const,否則編譯出錯,在形參前面則可以加const以確定在函數中該變量不會被修改。

  • 那麼,在定義時,形參到底是指針呢?還是引用?

一般情況下,建議使用引用,因為不産生對象的拷貝,速度快。但是也不是說指針就一無是處了。

摘自『高品質c++程式設計』

條款一:指針與引用的差別

指針與引用看上去完全不同(指針用操作符’*’和’->’,引用使用操作符’.’),但是它們似乎有相同的功能。指針與引用都是讓你間接引用其他對象。你如何決定在什麼時候使用指針,在什麼時候使用引用呢?

首先,要認識到在任何情況下都不能用指向空值的引用。一個引用必須總是指向某些對象。是以如果你使用一個變量并讓它指向一個對象,但是該變量在某些時候也可能不指向任何對象,這時你應該把變量聲明為指針,因為這樣你可以賦空值給該變量。相反,如果變量肯定指向一個對象,例如你的設計不允許變量為空,這時你就可以把變量聲明為引用。

  • 那什麼時候該加const呢?

答案是當你不想也不願别人改變你的參數值時。

函數參數是指針 OR 引用?該不該加const?
函數參數是指針 OR 引用?該不該加const?

繼續閱讀