c – 编译器是否为“const”和“not-const”函数提供了模糊错误
发布时间:2020-12-16 03:43:19 所属栏目:百科 来源:网络整理
导读:我在c结构中重载了const和非const函数.然后,我运行程序,我想知道,它没有模棱两可的错误工作正常. #include iostreamstruct St { int f() const { return 1; } int f() { return 2; }} s;int main() { int ret = s.f(); std::coutretstd::endl; return 0;} 所
我在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”和“not-const”函数带来模糊错误? 解决方法
这是
const overloading,即C中的
a thing.
在这种情况下,编译器确定struct没有重载函数返回类型(当然是disallowed due to ambiguity ),而是具有不同“constness”的重载函数,这是其他一个答案中的一个术语,这在这里是有意义的. 至于没有编译器错误: > const重载是C规范的一部分,所以没有错误 希望有所帮助! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |