我在c结构中重载了const和非const函数.然后,我运行程序,我想知道,它没有模棱两可的错误工作正常.
#include <iostream> struct St { int f() const { return 1; } int f() { return 2; } } s; int main() { int ret = s.f(); std::cout<<ret<<std::endl; return 0; }
解决方法
这是
const overloading,即C中的
a thing.
在这种情况下,编译器确定struct没有重载函数返回类型(当然是disallowed due to ambiguity ),而是具有不同“constness”的重载函数,这是其他一个答案中的一个术语,这在这里是有意义的.
至于没有编译器错误:
> const重载是C规范的一部分,所以没有错误
>在编译时,编译器“看到”结构返回到非const环境,因此使用非const函数,导致正常操作发生
希望有所帮助!