0
考虑下面的代码:用const和non-const的回报重载函数引用
#include <cstdio>
struct X
{
int a;
};
struct Y
{
X x;
X& GetX()
{
printf("non-const version\n");
return x;
}
X const& GetX() const
{
printf("const version\n", __FUNCTION__);
return x;
}
};
int main()
{
Y y;
X& i = y.GetX();
X const& j = y.GetX();
return 0;
}
当代码:: Blocks的16.01跑,我得到:
non-const version
non-const version
我经常看到这样的代码在我工作的地方,你用不同的返回类型重载了函数。一个是参考,另一个是参考。
我的问题是:这种类型的编码的用途或好处是什么,如果const版本可以做的一切,非常量版本也可以做什么?我如何调用GetX()的const版本?在上面的例子中,非const版本总是被调用。
函数重载不考虑返回类型。 –
尝试制作'y' const –
如果你只有一个const值,该怎么办? –