由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - const in c++
相关主题
c++ iterator 弱问请教一个python的概念问题
问个c++问题array如何get set?
为啥gcc找不到类的构造函数?这么说吧,fp不是否定变量,而是控制变量的范围
一个c++小问题how to change a variable's value in a const function
这个类的default constructor怎么写问个问题
string operator +(面试题) 给code挑毛病(updated with multiple choices)
C++一问why copy assignment operator returns non-const type?
question about const referenceC++一问
相关话题的讨论汇总
话题: const话题: string话题: map话题: operator话题: c++
进入Programming版参与讨论
1 (共1页)
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是因为&不是指针,只能初始化,不能被赋值

相关主题
string operator +请教一个python的概念问题
C++一问array如何get set?
question about const reference这么说吧,fp不是否定变量,而是控制变量的范围
进入Programming版参与讨论
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, 大二?
1 (共1页)
进入Programming版参与讨论
相关主题
C++一问这个类的default constructor怎么写
没人觉得python的string是immutable不爽吗?string operator +
请教cosnt的使用C++一问
[c++] reference 真得不能bound to a second object 么?question about const reference
c++ iterator 弱问请教一个python的概念问题
问个c++问题array如何get set?
为啥gcc找不到类的构造函数?这么说吧,fp不是否定变量,而是控制变量的范围
一个c++小问题how to change a variable's value in a const function
相关话题的讨论汇总
话题: const话题: string话题: map话题: operator话题: c++