0x6*_*773 0 c++ g++ c++11 c++14
在下面的代码中,为什么返回类型foo::func是,vector<int>::const_iterator而不是vector<int>::iterator我返回的对象vector<int>::iterator.
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
class foo
{
private:
vector<int> ar;
public:
foo()
{
ar.resize(10);
iota(ar.begin(), ar.end(), 1);
}
auto func() const
{
return ar.begin() + 5;
}
};
int main()
{
foo x;
cout<<boolalpha<<endl;
auto it = x.func();
cout<<is_same<decltype(it), vector<int>::iterator>::value<<endl;
cout<<is_same<decltype(it), vector<int>::const_iterator>::value<<endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
上述代码的输出是:
false
true
Run Code Online (Sandbox Code Playgroud)
相反,如果我重新定义foo::func()为
auto func()
{
return ar.begin() + 5;
}
Run Code Online (Sandbox Code Playgroud)
输出将是
true
false
Run Code Online (Sandbox Code Playgroud)
为什么常量成员函数将返回类型更改为常量?我是否需要删除const关键字以使返回类型为vector<int>::iterator或有其他方式吗?