作者putintostyle (阿澤)
看板C_and_CPP
標題[問題] const問題
時間Wed Feb 15 15:23:31 2017
大家好
小弟是剛接觸c++
想請問版上各位前輩
http://i.imgur.com/VZuuZN2.jpg
http://i.imgur.com/yT3KeWg.jpg
我的理解是const 是控制這個變量不會被修改
那我把const刪掉應該也是不會有影響才是
但是我刪掉之後,整個程式就出現錯誤
想問一下版上各位,是我理解錯誤還是哪個環節出錯
謝謝各位
-----
Sent from JPTT on my HTC_M910x.
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 106.1.10.249
※ 文章網址: https://webptt.com/m.aspx?n=bbs/C_and_CPP/M.1487143414.A.9FF.html
1F:推 Sirctal: ... const在不同的地方所擁有的意義不同 你在講哪一段?? 02/15 15:35
2F:→ putintostyle: 不是所有的const都是指我不去變動我的參數嗎@@ 02/15 15:36
3F:→ Sirctal: 你可以去看一下 effective c++ 條款 3 02/15 15:37
4F:→ Sirctal: 而且你也沒有說錯誤是什麼 哪段發生的 02/15 15:38
5F:→ Sirctal: 看來有請水晶球登場?? 02/15 15:38
6F:推 Sirctal: 我個人猜測你應該是 function參數中的const拿掉吧 02/15 15:53
7F:→ Sirctal: const call by reference 跟 call by reference不同 02/15 15:54
8F:→ putintostyle: 對就是那個地方的const拿掉出事了 02/15 15:56
9F:→ putintostyle: 我不太懂這兩個錯在哪 02/15 16:08
10F:推 Sirctal: XD 又是版標 你去了解一下 我說的 const call by referen 02/15 16:49
11F:→ Sirctal: 跟call by reference的差異 02/15 16:50
12F:→ james1022jk: 你傳的參數是不是本身就是const 02/15 17:24
13F:→ putintostyle: 我有看了差別,就是要控制reference不要讓她跑掉 02/15 17:32
14F:→ Jockey66666: const是compile time檢查不是你沒修改就不會有error 02/15 17:54
15F:→ Jockey66666: 我看到了6個const你也沒說你刪了哪個 02/15 17:56
16F:→ putintostyle: 我是全部刪掉 02/15 18:38
17F:→ Jockey66666: 我數錯了.h檔裡面有7個 .cpp檔裡有5個 02/15 20:31
18F:→ Jockey66666: 你確定這12個都被你刪除的話就是傳入的參數的問題了 02/15 20:32
19F:推 yvb: 因為你沒貼出的 fig10_12.cpp 的 main() => 02/15 21:03
20F:→ yvb: Employee manager( "Bob", "Blue", birth, hire ); 02/15 21:03
21F:→ yvb: "Bob" 和 "Blue" 是 const. 02/15 21:04
22F:噓 druid0214: 把你的code貼上來很難? 02/15 21:18
23F:→ bluesoul: 你應該是compile不過吧 02/15 23:49
24F:→ putintostyle: 謝謝各位我懂我的盲點了QQ 02/16 00:39
25F:→ Zephyr750: const就是唯讀, 用在不同的地方, 對不同的東西進行限制 02/16 08:27
26F:推 friendever: 因為那個是copy consructor,規定就是要const & 02/18 01:28
27F:→ friendever: 選我正解 02/18 01:28
28F:推 loveflames: 樓上的不要亂講,什麼copy ctor... 02/18 10:26
29F:→ loveflames: ctor參數用const lvalue ref的原因很簡單 02/18 10:27
30F:→ loveflames: 因為可以綁左值跟右值 02/18 10:29
31F:推 CoNsTaR: 有沒有加 const 是不同的 type,不只是能不能被修改的問 02/22 00:48
32F:→ CoNsTaR: 題而已 02/22 00:48
33F:→ yvb: 補充一下, 我前面 const 的說法適用於 02/23 18:48
36F:→ yvb: 但原 PO 的版本有點不同 (可能是 8/e 的版本?), 02/23 18:48
37F:→ yvb: 不是 const char * const, 而是 const string &, 02/23 18:49
38F:→ yvb: 那就應該是前面 love大 的說法才對. 02/23 18:49
39F:推 yvb: 試著分別用 string bob = "Bob", blue = "Blue"; 02/23 18:51
40F:→ yvb: 以及 char bob[] = "Bob", blue[] = "Blue"; 02/23 18:51
41F:→ yvb: 搭配 Employee manager( bob, blue, birth, hire ); 02/23 18:51
42F:→ yvb: 看看有何結果 (考慮 char[] 轉型是什麼情況); 此外, 02/23 18:51
43F:→ yvb: 改成 manager( string("Bob"), string("Blue"), ... 02/23 18:51
44F:→ yvb: 以及 manager( string(bob), string(blue), ... 02/23 18:52
45F:→ yvb: 再試看看. 問題就在於是 lvalue 還是 rvalue. 02/23 18:52