S*******s 发帖数: 13043 | 1 const map& a=GetMap("XXX");
是说不能对a进行任何写操作,还是说不能把a指向另一个map?就是说以下哪个会出错?
a.insert(pair("aaa","bbbb");
a=GetMap("YYY"); |
l*********s 发帖数: 5409 | 2 you cannot do write-op
【在 S*******s 的大作中提到】 : const map& a=GetMap("XXX"); : 是说不能对a进行任何写操作,还是说不能把a指向另一个map?就是说以下哪个会出错? : a.insert(pair("aaa","bbbb"); : a=GetMap("YYY");
|
s******u 发帖数: 501 | 3 both出错
1是因为不能对const &指向的object进行任何修改
2是因为&不是指针,只能初始化,不能被赋值
【在 S*******s 的大作中提到】 : const map& a=GetMap("XXX"); : 是说不能对a进行任何写操作,还是说不能把a指向另一个map?就是说以下哪个会出错? : a.insert(pair("aaa","bbbb"); : a=GetMap("YYY");
|
h**k 发帖数: 3368 | 4 Const 离那个部分更近,就是那个部分是const
Const int *
Int * const
【在 S*******s 的大作中提到】 : const map& a=GetMap("XXX"); : 是说不能对a进行任何写操作,还是说不能把a指向另一个map?就是说以下哪个会出错? : a.insert(pair("aaa","bbbb"); : a=GetMap("YYY");
|
b*******s 发帖数: 5216 | 5 & 不能赋值是标准规定的? 记得很多编译器都不查这个
【在 s******u 的大作中提到】 : both出错 : 1是因为不能对const &指向的object进行任何修改 : 2是因为&不是指针,只能初始化,不能被赋值
|
d****i 发帖数: 4809 | 6 引用不能被重新赋值是标准吧。这个也make sense,引用要能被重新赋值岂不乱套了。
【在 b*******s 的大作中提到】 : & 不能赋值是标准规定的? 记得很多编译器都不查这个
|
f*******n 发帖数: 12623 | 7 你这个方法有问题。那int const *呢?
【在 h**k 的大作中提到】 : Const 离那个部分更近,就是那个部分是const : Const int * : Int * const
|
f*******n 发帖数: 12623 | 8 因为语言里根本就没有任何操作可以改变&指向什么。所以还需要查什么呢?
【在 b*******s 的大作中提到】 : & 不能赋值是标准规定的? 记得很多编译器都不查这个
|
U***5 发帖数: 2796 | 9 Both will not compile.
【在 S*******s 的大作中提到】 : const map& a=GetMap("XXX"); : 是说不能对a进行任何写操作,还是说不能把a指向另一个map?就是说以下哪个会出错? : a.insert(pair("aaa","bbbb"); : a=GetMap("YYY");
|
G***l 发帖数: 355 | 10 补充下1
具体来说,const声明的变量不是不能修改,而是不能调用任何非const的方法/
operator。insert不是一个const方法。如果你在const方法里改怎么办?做不到,因为
const方法里也只能调用const方法。
不过你可以把某个成员定义为mutable。This is the evil part of c++。
const是c++里重要的基础概念之一,lz有时间多看看书。
【在 s******u 的大作中提到】 : both出错 : 1是因为不能对const &指向的object进行任何修改 : 2是因为&不是指针,只能初始化,不能被赋值
|
|
|
k**********g 发帖数: 989 | 11
To give a simple "mental" approach: (not necessarily correct)
(In both thought exercise below, ignore for a moment whether they actually
exists in STL.)
For the first line of code, is it permissible to define this?
std::pair<...> map::insert(...) const;
(Namely an insert method that's marked const - what does it do?)
For the second line of code, is it permissible to define this?
map& map::operator= (map&
other) const;
(Namely an assignment operator that's marked const - what does it do?)
A reference, once initialized (to refer to another variable), effectively
behaves the same as the l-value of that variable. Anything - method calls,
operator calls, assignments (yes, the operator= thing) gets handled by that
variable.
【在 S*******s 的大作中提到】 : const map& a=GetMap("XXX"); : 是说不能对a进行任何写操作,还是说不能把a指向另一个map?就是说以下哪个会出错? : a.insert(pair("aaa","bbbb"); : a=GetMap("YYY");
|
j******t 发帖数: 788 | 12 如果a是CLASS member, 考虑把a定义成MUTABLE, class可以为CONST |
s******u 发帖数: 501 | 13 邪恶的mutable,你就别教别人用mutable了,哈哈
【在 j******t 的大作中提到】 : 如果a是CLASS member, 考虑把a定义成MUTABLE, class可以为CONST
|
k**********g 发帖数: 989 | 14
它的名字是 just do it,
它的别号是 don't hate me
它就是 mutable 的化身
(what a 冷回貼。)
【在 s******u 的大作中提到】 : 邪恶的mutable,你就别教别人用mutable了,哈哈
|
S*******s 发帖数: 13043 | 15 前天面试的时候问着问着就问出这么个题来。这种很基本的东西却很容易弄错,这可能
是c++的一个很大的劣势吧。
这种题很能考验人品。当时那答题的孩子很慌乱,胡说八道的,就像这个楼里的后面的
几个帖子。其实大家都是这么过来的,除非你在简历上声明精通c++,一些语法上的细节
弄不清楚完全可以理解。可是如果胡说一通,想蒙混过关,就会让人产生疑虑,真招进
来工作的时候会不会也是这个工作态度,埋下各种雷,谁知道什么时候炸,到时候连累
的是整个组。 |
S*******s 发帖数: 13043 | 16 你不发言别人也没法知道你一脑子糨糊。损你你不介意是应该的
!
【在 j******t 的大作中提到】 : 如果a是CLASS member, 考虑把a定义成MUTABLE, class可以为CONST
|
j******t 发帖数: 788 | 17 高手损人我服气,你这种连基本概念都拧不清的,我就不太服气了。
完了也没必要加一句这题我是用来考别人的。。。你说你这脑子里在想什么,请教就是
请教。态度至少应该端正一点
【在 S*******s 的大作中提到】 : 你不发言别人也没法知道你一脑子糨糊。损你你不介意是应该的 : : !
|
S*******s 发帖数: 13043 | 18 那你就不服气呗。我管你呀。
【在 j******t 的大作中提到】 : 高手损人我服气,你这种连基本概念都拧不清的,我就不太服气了。 : 完了也没必要加一句这题我是用来考别人的。。。你说你这脑子里在想什么,请教就是 : 请教。态度至少应该端正一点
|
j******t 发帖数: 788 | 19 教你一点做人的道理,以后工作了要吃亏。学校里学知识,社会上很多的是学做人。明
白吗? 跟你发贴我都嫌丢人,既然你已收到,删了
【在 S*******s 的大作中提到】 : 那你就不服气呗。我管你呀。
|
S*******s 发帖数: 13043 | 20 我都快退休的人了,你跟我说“以后工作了要吃亏”。
【在 j******t 的大作中提到】 : 教你一点做人的道理,以后工作了要吃亏。学校里学知识,社会上很多的是学做人。明 : 白吗? 跟你发贴我都嫌丢人,既然你已收到,删了
|
j******t 发帖数: 788 | 21 哈,得反正我信了。你老今年贵g庚,年方20, 大二?
【在 S*******s 的大作中提到】 : 我都快退休的人了,你跟我说“以后工作了要吃亏”。
|
S*******s 发帖数: 13043 | 22 i wish
【在 j******t 的大作中提到】 : 哈,得反正我信了。你老今年贵g庚,年方20, 大二?
|