const关键字这里是我的简单的代码:与函数签名
#include <iostream>
using namespace std;
class alloc { };
template <typename T, typename Alloc = alloc>
class vector
{
public:
void swap(vector<T,Alloc> &v) { cout << "swap()" << endl; }
};
template <typename T, typename Alloc>
void swap(const vector<T,Alloc> &v1,const vector<T,Alloc> &v2)
{
v1.swap(v2);
}
int main()
{
vector<int> x;
vector<int> y;
swap(x,y);
return 0;
}
的代码片段运行没有问题。但我不能让任何输出
然后我删除const
关键字。
void swap(vector<T,Alloc> &v1,vector<T,Alloc> &v2)
我得到的输出swap()
我已阅读“的原因是,常量的参数只能在函数中局部适用,因为它正在对数据的拷贝。这意味着函数签名反正真的是一样的。“
所以我想有写之间没有差异或不写const.if我坚持在这里写常量,我如何修改代码来获取输出swap()
试着改变你的类名'vector'和函数名'swap'到别的东西,它们与STL的名字冲突。 – songyuanyao