小编sky*_*ain的帖子

为什么operator ++返回非const值?

我读过Scott Meyers编写的Effective C++ 3rd Edition.

本书的第3项" const尽可能使用",如果我们想要防止rvalues被意外地分配给函数的返回值,那么返回类型应该是const.

例如,增量函数iterator:

const iterator iterator::operator++(int) {
    ...
}
Run Code Online (Sandbox Code Playgroud)

然后,防止了一些事故.

iterator it; 

// error in the following, same as primitive pointer
// I wanted to compare iterators
if (it++ = iterator()) {
  ...
}
Run Code Online (Sandbox Code Playgroud)

但是,std::vector::iteratorGCC中的迭代器不返回const值.

vector<int> v;
v.begin()++ = v.begin();   // pass compiler check
Run Code Online (Sandbox Code Playgroud)

这有什么理由吗?

c++ const return-value

23
推荐指数
1
解决办法
1467
查看次数

标签 统计

c++ ×1

const ×1

return-value ×1