在下面的代码中,为什么第一次调用解析为catchClass(aClass&)
并在第二次调用中将临时值作为参数catchClass(const aClassCatcher&)
#include <iostream>
using namespace std;
class aClassCatcher{};
class aClass{
public:
operator aClassCatcher(){
return aClassCatcher();
}
};
void catchClass(aClass&){
cout << __FUNCSIG__ << endl;
}
void catchClass(const aClassCatcher&){
cout << __FUNCSIG__ << endl;
}
int main()
{
aClass aC;
catchClass(aC); // calls catchClass(aClass&)
catchClass(aClass()); // calls catchClass(const aClassCatcher&)
}
如果您想知道我是从哪里想到这个的,我正在尝试理解Dobb 的一篇文章中描述的移动构造函数。