在C++中對值傳遞的形參加 const 修飾符無意義嗎?
由於在 C++ 中,const
是一個經常被用到的修飾符和關鍵字,有時候人們會想也不想就對其進行了濫用。剛才我看這樣一條語句:
void do_work (const int x);
既然x
是傳值的形參,所以對其的修改本來就不會影響原來的值,那麼為什麼還要加上const
呢?
其實,加了const
的主要後果是:無法修改被複制後的x
的值。比如,本來你可以這樣:
void do_work (const int x) {
x = 5;
}
雖然這條語句並不會影響調用方傳遞的實參,但是在函數內部,這個x
是可以當一個臨時變量來處理的。
如果加了const
,這條語句將產生編譯錯誤:
表達式必須是可修改的左值。
由上可見,在這個地方,是否添加 const
並非沒有意義,但是在多數情況下意義不大。加上這個 const
對健壯性的貢獻並不大,但是大部分情況下,直接使用形參作為函數的內部變量也並不合適。或許,這也是設計者為 C++ 標準提供這個語法的目的之一吧。
© 轉載需附帶本文連結,依 CC BY-NC-SA 4.0 釋出。