作者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/cn.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