为什么成员函数的const版本总是被选中,即使存在非const版本
Why is the const version of a member function always selected even the non-const version exists?
更新:这是一个错误的问题。string::data()没有非const版本;忽略这个问题。我很抱歉!
string::data
有const版本和非const版本。在下面的代码中,str
显然是一个非const对象,因此str.data()
应该调用非const版本。然而,vc++ 2013不这么认为。
#include <string>
using namespace std;
void f1(char* sz)
{}
template<class stringT>
void f2(stringT& str)
{
f1(str.data());
}
int main()
{
string s;
f2(s);
// error C2664: 'void f1(char *)' :
// cannot convert argument 1 from 'const char *' to 'char *'
}
string::data
有const版本和非const版本。
不,没有。只有const
版本