看板 C_and_CPP 關於我們 聯絡資訊
大家好 小弟是剛接觸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://www.ptt.cc/bbs/C_and_CPP/M.1487143414.A.9FF.html
Sirctal: ... const在不同的地方所擁有的意義不同 你在講哪一段?? 02/15 15:35
putintostyle: 不是所有的const都是指我不去變動我的參數嗎@@ 02/15 15:36
Sirctal: 你可以去看一下 effective c++ 條款 3 02/15 15:37
Sirctal: 而且你也沒有說錯誤是什麼 哪段發生的 02/15 15:38
Sirctal: 看來有請水晶球登場?? 02/15 15:38
Sirctal: 我個人猜測你應該是 function參數中的const拿掉吧 02/15 15:53
Sirctal: const call by reference 跟 call by reference不同 02/15 15:54
putintostyle: 對就是那個地方的const拿掉出事了 02/15 15:56
putintostyle: 我不太懂這兩個錯在哪 02/15 16:08
Sirctal: XD 又是版標 你去了解一下 我說的 const call by referen 02/15 16:49
Sirctal: 跟call by reference的差異 02/15 16:50
james1022jk: 你傳的參數是不是本身就是const 02/15 17:24
putintostyle: 我有看了差別,就是要控制reference不要讓她跑掉 02/15 17:32
Jockey66666: const是compile time檢查不是你沒修改就不會有error 02/15 17:54
Jockey66666: 我看到了6個const你也沒說你刪了哪個 02/15 17:56
putintostyle: 我是全部刪掉 02/15 18:38
Jockey66666: 我數錯了.h檔裡面有7個 .cpp檔裡有5個 02/15 20:31
Jockey66666: 你確定這12個都被你刪除的話就是傳入的參數的問題了 02/15 20:32
yvb: 因為你沒貼出的 fig10_12.cpp 的 main() => 02/15 21:03
yvb: Employee manager( "Bob", "Blue", birth, hire ); 02/15 21:03
yvb: "Bob" 和 "Blue" 是 const. 02/15 21:04
druid0214: 把你的code貼上來很難? 02/15 21:18
bluesoul: 你應該是compile不過吧 02/15 23:49
putintostyle: 謝謝各位我懂我的盲點了QQ 02/16 00:39
Zephyr750: const就是唯讀, 用在不同的地方, 對不同的東西進行限制 02/16 08:27
friendever: 因為那個是copy consructor,規定就是要const & 02/18 01:28
friendever: 選我正解 02/18 01:28
loveflames: 樓上的不要亂講,什麼copy ctor... 02/18 10:26
loveflames: ctor參數用const lvalue ref的原因很簡單 02/18 10:27
loveflames: 因為可以綁左值跟右值 02/18 10:29
CoNsTaR: 有沒有加 const 是不同的 type,不只是能不能被修改的問 02/22 00:48
CoNsTaR: 題而已 02/22 00:48
yvb: 補充一下, 我前面 const 的說法適用於 02/23 18:48
yvb: C++ How to Program 5/e ( https://goo.gl/kzkntP ) 的 02/23 18:48
yvb: Figure 10.12 ( https://goo.gl/U3mEkj ); 02/23 18:48
yvb: 但原 PO 的版本有點不同 (可能是 8/e 的版本?), 02/23 18:48
yvb: 不是 const char * const, 而是 const string &, 02/23 18:49
yvb: 那就應該是前面 love大 的說法才對. 02/23 18:49
yvb: 試著分別用 string bob = "Bob", blue = "Blue"; 02/23 18:51
yvb: 以及 char bob[] = "Bob", blue[] = "Blue"; 02/23 18:51
yvb: 搭配 Employee manager( bob, blue, birth, hire ); 02/23 18:51
yvb: 看看有何結果 (考慮 char[] 轉型是什麼情況); 此外, 02/23 18:51
yvb: 改成 manager( string("Bob"), string("Blue"), ... 02/23 18:51
yvb: 以及 manager( string(bob), string(blue), ... 02/23 18:52
yvb: 再試看看. 問題就在於是 lvalue 還是 rvalue. 02/23 18:52