以下代码可以编译:
struct Ret {};
struct A
{
virtual const Ret& fun() = 0;
};
struct B : public A
{
Ret& fun() override
{
static Ret ret;
return ret;
}
};
int main()
{
B b;
}
如何在编译时禁止重载方法返回值的const限定符与实际返回类型不一致?
提前感谢。
const Ret& fun() { return fun_internal(); } protected: virtual const Ret& fun_internal() = 0;
我不确定你能完全防止它... - Borgleaderint fun() override
- 显然它是不同的类型,它根本不应该工作,非const限定符变体也不应该编译。也许它是相同的类型,但通过返回const引用,我限制了返回的对象引用调用自己的非const方法。我希望未来的实现者保留这种行为。现在只有使用A接口时才保留此行为。整个事情有点不一致。 - flamasterrr