class P
{
public:
int increase(const int &val);
int increase(int &val);
int increase(int val);
int increase(const int &val) const;
int increase(int &val)const;
int increase(int val) const;
};
这些竟然都算是重载,我也是醉了!
一般情况下,无const修饰的声明,函数调用时,必须有变量名,不能使用字面值, 且类型必须是声明类型,不会进行类型转换,否则出错。
//对于声明为 int increase(int &val)
int a=1;
int b=2;
double c=3;
const int d=4;
increase(a);//ok
increase(a+b);//error
increase(c);//error
increase(3);//error
increase(d);//error
而有const声明的,即会类型转换,又可以使用字面值,有无const修饰的变量都可以