回覆列表
-
1 # 使用者9914938914948
-
2 # 使用者9914938914948
函數里形參加const不是代表此形參必須是一個const變數,而是代表這個引數不能在函式中被修改。當然如果一個形參不是按照引用呼叫,則加const沒什麼意義,因為函式中使用的只是接收引數的副本。你看到的函數里形參前加const的一般都是這樣的吧。T代表某總型別(如int,char...)function(constT&x,...);const限定符表示在function這個函式的函式體中,一定不能對x進行修改,x為函式接收的變數的引用,也就是別名,如果修改,就對函式外部的那個變數進行了修改。舉一個具體些的例子,比如你要求某個int的平方,寫一個square函式intsquare(constint&a){returna*a;}//這個寫法中沒有修改a的值,因此正確但若寫成intsquare(constint&a){a=a*a;returna;}//則程式會報錯啦。因為你修改了a的值,這是const所不允許的。這樣你在函式外部宣告某變數intvar=8;你使用square(var)後var的值也會變,這顯然是你不希望的。
函數里形參加const不是代表此形參必須是一個const變數,而是代表這個引數不能在函式中被修改。當然如果一個形參不是按照引用呼叫,則加const沒什麼意義,因為函式中使用的只是接收引數的副本。你看到的函數里形參前加const的一般都是這樣的吧。T代表某總型別(如int,char...)function(constT&x,...);const限定符表示在function這個函式的函式體中,一定不能對x進行修改,x為函式接收的變數的引用,也就是別名,如果修改,就對函式外部的那個變數進行了修改。舉一個具體些的例子,比如你要求某個int的平方,寫一個square函式intsquare(constint&a){returna*a;}//這個寫法中沒有修改a的值,因此正確但若寫成intsquare(constint&a){a=a*a;returna;}//則程式會報錯啦。因為你修改了a的值,這是const所不允許的。這樣你在函式外部宣告某變數intvar=8;你使用square(var)後var的值也會變,這顯然是你不希望的。