在函數調用時,我們經常看見一個函數的接受參數為(const char *);
例如strlen()函數,它的定義為:
*
那麼將形參設置為const的到底有什麼好處呢?網絡上經常的回答是:這樣將把形參限定為常量,使得我們不能修改它。總感覺這種說法似乎是明白了,但再仔細的想下,總覺得少點什麼。
在我看來,這樣做的好處有2點:
第一,通過限定實參的修改,將運行期錯誤提前至編譯器,這樣就能夠將不發生錯誤的保障由人變為機器,更可靠。這種說法比網上流傳的“const把形參限定為常量,使得我們不能修改它”說法更深入也更根本,更容易讓人印象深刻!
比如C++中,將堆區內存釋放放入到析構函數中,就是為了實現這種保障。讓機器去自動實現,而不是讓一個人去發誓說:“我能保證所有的資源都被釋放”。 ----引用來自 Matrix_R
第二,擴大了該函數的參數的接收范圍,使得函數更具通用性。
從下邊這個例子中,我們可以看出這兩點好處;寫一個函數length(),實現與strlen()相同的功能,然後進行調用,代碼如下:
#include <><stdio.h><tchar.h><iostream> length( * count = (;*s++ !=;count++ _tmain( argc, _TCHAR* str1[] = ); *s =
上面程序可以正確的編譯運行,並且輸出3行“common length:16”。