这样做的动机是(很少)我需要知道类构造函数或函数的输入参数通常是const.通常当类是帮助程序"自动化"某些过程时.
示例:
这是从容器中获取随机元素的OK范围方法吗?
如果查看代码,很明显,如果更改传递给构造函数的容器,则以后类功能会被破坏.那么有没有办法让函数"需求"const而不是"promise"const.
例:
int f(const vector<int>& v)
{
return v.size();
}
int main()
{
vector<int> v;
v.push_back(42); // can f be changed to reject v because it is not const
cout << f(v);
}
Run Code Online (Sandbox Code Playgroud)
声明但不实现非const版本.
int f(vector<int>& v);
Run Code Online (Sandbox Code Playgroud)
尝试传递非const向量将被解析为此函数,然后您将收到链接器错误,因为不存在此类函数.
一些花哨的模板游戏可能会把它变成编译时错误.