[問題] const擺放位置

作者: anoymouse (沒有暱稱)   2014-11-25 23:43:03
const int fun1()
int fun2(const int x)
為何都是沒有意義的? 網路上說如果輸入參數採用“值傳遞”,由於函數將自動產生臨時
變量用於複製該參數,該輸入參數本来就無需保護,所以不要加const
複製一個臨時的變量跟保護有什麼關係?
第一個函式不就是回傳到const int的變數
第二個是傳遞的值不能改變 不是嗎 ?
作者: uranusjr (←這人是超級笨蛋)   2014-11-25 23:44:00
你的理解沒問題, 前面說的網路說法沒有全文無法評論, 但此兩例中的 const 絕對不是沒有意義
作者: wuliou (wuliou)   2014-11-26 00:01:00
通常會搭配&用 有些大物件copy會太吃效能這時候const可以避免失誤改到傳進來的東西
作者: firose (guest也是也是也是也是也)   2014-11-26 00:24:00
第二行不能說沒意義 至少可以確保改 int 在函數內不會被改
作者: anoymouse (沒有暱稱)   2014-11-26 00:25:00
看不懂網路上的意思
作者: Push5F (帳號已賣)   2014-11-26 00:35:00
2意思是保證不會動到你傳進來的值
作者: anoymouse (沒有暱稱)   2014-11-26 01:12:00
const simple *const function()第二個const是說指標也不能改變對嗎
作者: dirkc (3781615)   2014-11-26 11:40:00
第一個不是,因為複製值所以不限制回傳接的地方也需const
作者: purpose (秀才遇到肥宅兵)   2014-11-26 12:03:00
http://codepad.org/zhih7unj 去掉fun1()的 const 才能跑
作者: dirkc (3781615)   2014-11-26 16:22:00
可以和這個一起思考:http://codepad.org/R9fsOgoS回傳是const如樓上的code,但經過複製值(=)後,接的地方不限第二個是說在function的範圍(scope)內,該變數為const原po在推文問的問題:對,代表不能改變指向的地方了,固定了可再思考這個: http://codepad.org/mnqj0Y92
作者: anoymouse (沒有暱稱)   2014-11-26 20:25:00
我看看再問你們 謝謝

Links booklink

Contact Us: admin [ a t ] ucptt.com