[問題] const擺放位置

看板C_and_CPP作者 (沒有暱稱)時間11年前 (2014/11/25 23:43), 編輯推噓2(2018)
留言20則, 7人參與, 最新討論串1/2 (看更多)
const int fun1() int fun2(const int x) 為何都是沒有意義的? 網路上說如果輸入參數採用“值傳遞”,由於函數將自動產生臨時 變量用於複製該參數,該輸入參數本来就無需保護,所以不要加const 複製一個臨時的變量跟保護有什麼關係? 第一個函式不就是回傳到const int的變數 第二個是傳遞的值不能改變 不是嗎 ? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.136.116.139 ※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1416930185.A.B34.html

11/25 23:44, , 1F
你的理解沒問題, 前面說的網路說法沒有全文無法評論, 但
11/25 23:44, 1F

11/25 23:45, , 2F
此兩例中的 const 絕對不是沒有意義
11/25 23:45, 2F

11/25 23:46, , 3F

11/25 23:47, , 5F
的3.(1)
11/25 23:47, 5F

11/26 00:01, , 6F
通常會搭配&用 有些大物件copy會太吃效能
11/26 00:01, 6F

11/26 00:01, , 7F
這時候const可以避免失誤改到傳進來的東西
11/26 00:01, 7F

11/26 00:24, , 8F
第二行不能說沒意義 至少可以確保改 int 在函數內不會被改
11/26 00:24, 8F

11/26 00:25, , 9F
看不懂網路上的意思
11/26 00:25, 9F

11/26 00:35, , 10F
2意思是保證不會動到你傳進來的值
11/26 00:35, 10F

11/26 01:12, , 11F
const simple *const function()
11/26 01:12, 11F

11/26 01:12, , 12F
第二個const是說指標也不能改變對嗎
11/26 01:12, 12F

11/26 11:40, , 13F
第一個不是,因為複製值所以不限制回傳接的地方也需const
11/26 11:40, 13F

11/26 12:03, , 14F
http://codepad.org/zhih7unj 去掉fun1()的 const 才能跑
11/26 12:03, 14F

11/26 16:22, , 15F
可以和這個一起思考:http://codepad.org/R9fsOgoS
11/26 16:22, 15F

11/26 16:25, , 16F
回傳是const如樓上的code,但經過複製值(=)後,接的地方不限
11/26 16:25, 16F

11/26 16:26, , 17F
第二個是說在function的範圍(scope)內,該變數為const
11/26 16:26, 17F

11/26 16:35, , 18F
原po在推文問的問題:對,代表不能改變指向的地方了,固定了
11/26 16:35, 18F

11/26 16:35, , 19F
可再思考這個: http://codepad.org/mnqj0Y92
11/26 16:35, 19F

11/26 20:25, , 20F
我看看再問你們 謝謝
11/26 20:25, 20F
文章代碼(AID): #1KTAE9iq (C_and_CPP)
文章代碼(AID): #1KTAE9iq (C_and_CPP)