前几天被人问到类函数加上const修饰符后的重载情况,翻了一下
,只发现对参数的const修饰符的情况的描述,没有发现在函数上加上const修饰符后的情况的描述。其实这个情形是非常简单的,在同一个类里面定义的两个函数,如果只是const修饰符上的区别,那么这两个函数同样会构成一个重载集。不同的是一个被const对象调用,一个被非const对象调用。例如:
class A
{
public:
void fun(){};
void fun()const{};
};
那么:
A a;
a.fun(); // 这里是调用 void fun()
const A ac;
ac.fun(); // 这里是调用 void fun() const