在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 釋出。