考虑这个
#include <iostream>
class A
{
public:
void fun(int x) const
{
std::cout<<"int x"<<std::endl;
}
void fun(const int x)
{
std::cout<<"const int x"<<std::endl;
}
void fun(int &x)
{
std::cout<<"int &x"<<std::endl;
}
void fun(const int &x)
{
std::cout<<"const int &x"<<std::endl;
}
};
int main()
{
A obj;
int a = 10;
const int b = 10;
int& ref = a;
const int& ref1 = b;
obj.fun(a);
obj.fun(b);
obj.fun(ref);
obj.fun(ref1);
return 0;
}
编译这个会产生歧义,但没有一个人说它是由于 fun(const int x) 但删除它会使代码正确编译
当我们在重载决议时创建一个参数 const ex-fun(const int& x) 和一个函数本身 const ex - fun(int x) const 有什么区别
尝试各种组合还有一些疑问,因此欢迎任何解释 const 而重载解析的作用的通用答案