[問題] const問題

看板C_and_CPP作者 (阿澤)時間8年前 (2017/02/15 15:23), 編輯推噓7(8136)
留言45則, 11人參與, 最新討論串4/4 (看更多)
大家好 小弟是剛接觸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

02/15 15:35, , 1F
... const在不同的地方所擁有的意義不同 你在講哪一段??
02/15 15:35, 1F

02/15 15:36, , 2F
不是所有的const都是指我不去變動我的參數嗎@@
02/15 15:36, 2F

02/15 15:37, , 3F
你可以去看一下 effective c++ 條款 3
02/15 15:37, 3F

02/15 15:38, , 4F
而且你也沒有說錯誤是什麼 哪段發生的
02/15 15:38, 4F

02/15 15:38, , 5F
看來有請水晶球登場??
02/15 15:38, 5F

02/15 15:53, , 6F
我個人猜測你應該是 function參數中的const拿掉吧
02/15 15:53, 6F

02/15 15:54, , 7F
const call by reference 跟 call by reference不同
02/15 15:54, 7F

02/15 15:56, , 8F
對就是那個地方的const拿掉出事了
02/15 15:56, 8F

02/15 16:08, , 9F
我不太懂這兩個錯在哪
02/15 16:08, 9F

02/15 16:49, , 10F
XD 又是版標 你去了解一下 我說的 const call by referen
02/15 16:49, 10F

02/15 16:50, , 11F
跟call by reference的差異
02/15 16:50, 11F

02/15 17:24, , 12F
你傳的參數是不是本身就是const
02/15 17:24, 12F

02/15 17:32, , 13F
我有看了差別,就是要控制reference不要讓她跑掉
02/15 17:32, 13F

02/15 17:54, , 14F
const是compile time檢查不是你沒修改就不會有error
02/15 17:54, 14F

02/15 17:56, , 15F
我看到了6個const你也沒說你刪了哪個
02/15 17:56, 15F

02/15 18:38, , 16F
我是全部刪掉
02/15 18:38, 16F

02/15 20:31, , 17F
我數錯了.h檔裡面有7個 .cpp檔裡有5個
02/15 20:31, 17F

02/15 20:32, , 18F
你確定這12個都被你刪除的話就是傳入的參數的問題了
02/15 20:32, 18F

02/15 21:03, , 19F
因為你沒貼出的 fig10_12.cpp 的 main() =>
02/15 21:03, 19F

02/15 21:03, , 20F
Employee manager( "Bob", "Blue", birth, hire );
02/15 21:03, 20F

02/15 21:04, , 21F
"Bob" 和 "Blue" 是 const.
02/15 21:04, 21F

02/15 21:18, , 22F
把你的code貼上來很難?
02/15 21:18, 22F

02/15 23:49, , 23F
你應該是compile不過吧
02/15 23:49, 23F

02/16 00:39, , 24F
謝謝各位我懂我的盲點了QQ
02/16 00:39, 24F

02/16 08:27, , 25F
const就是唯讀, 用在不同的地方, 對不同的東西進行限制
02/16 08:27, 25F

02/18 01:28, , 26F
因為那個是copy consructor,規定就是要const &
02/18 01:28, 26F

02/18 01:28, , 27F
選我正解
02/18 01:28, 27F

02/18 10:26, , 28F
樓上的不要亂講,什麼copy ctor...
02/18 10:26, 28F

02/18 10:27, , 29F
ctor參數用const lvalue ref的原因很簡單
02/18 10:27, 29F

02/18 10:29, , 30F
因為可以綁左值跟右值
02/18 10:29, 30F

02/22 00:48, , 31F
有沒有加 const 是不同的 type,不只是能不能被修改的問
02/22 00:48, 31F

02/22 00:48, , 32F
題而已
02/22 00:48, 32F

02/23 18:48, , 33F
補充一下, 我前面 const 的說法適用於
02/23 18:48, 33F

02/23 18:48, , 34F
C++ How to Program 5/e ( https://goo.gl/kzkntP ) 的
02/23 18:48, 34F

02/23 18:48, , 35F
Figure 10.12 ( https://goo.gl/U3mEkj );
02/23 18:48, 35F

02/23 18:48, , 36F
但原 PO 的版本有點不同 (可能是 8/e 的版本?),
02/23 18:48, 36F

02/23 18:49, , 37F
不是 const char * const, 而是 const string &,
02/23 18:49, 37F

02/23 18:49, , 38F
那就應該是前面 love大 的說法才對.
02/23 18:49, 38F

02/23 18:51, , 39F
試著分別用 string bob = "Bob", blue = "Blue";
02/23 18:51, 39F

02/23 18:51, , 40F
以及 char bob[] = "Bob", blue[] = "Blue";
02/23 18:51, 40F

02/23 18:51, , 41F
搭配 Employee manager( bob, blue, birth, hire );
02/23 18:51, 41F

02/23 18:51, , 42F
看看有何結果 (考慮 char[] 轉型是什麼情況); 此外,
02/23 18:51, 42F

02/23 18:51, , 43F
改成 manager( string("Bob"), string("Blue"), ...
02/23 18:51, 43F

02/23 18:52, , 44F
以及 manager( string(bob), string(blue), ...
02/23 18:52, 44F

02/23 18:52, , 45F
再試看看. 問題就在於是 lvalue 還是 rvalue.
02/23 18:52, 45F
文章代碼(AID): #1Of07sd_ (C_and_CPP)
文章代碼(AID): #1Of07sd_ (C_and_CPP)