在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++ 標準提供這個語法的目的之一吧。

当前页阅读量为: