假设您有一个类T,其中包含两个成员函数:
char foo() const {...}
char foo() {...}
.
- 这是正确的吗?
- 在此解析中调用了哪个规则?(参考标准很好,但简要摘要也会受到赞赏)
- 我尝试通过Google搜索,但我得到的旧结果都是涉及const的其他重载解析案例。然而,链接到旧的SO实际上解释了上述问题,这显然是很好的。
- 重新阅读Stroustrup的《C ++编程语言》,第二版(“特别版”),字符串/ Cref示例在第11.12节,第296页。由于Stroustrup非常精确,答案可能在前面的章节中,但我没有看到在哪里。对Stroustrup章节的引用也非常欢迎(最好是第二版,因为这是我拥有的版本)。第10.2.6节介绍了const成员作为那些“不改变对象值”的成员,这暗示了答案,但对我来说并不是一个清晰的解析指令。
char foo(T const *this)
和char foo(T *this)
(细节暂且不提)。 - David Rodríguez - dribeasT*
/T const*
参数被称为“隐式对象参数”(实际上它是一个引用);我不明白为什么这应该是高级视图。虽然隐式对象参数与实际函数参数之间存在某些细微差别,但据我所知,大部分重载分辨率将它们视为相等的。请参见 [over.match.funcs]。 - dypthis
指针的意义; 我指的是重载解析机制使用一个“虚构”的附加参数+参数。 - dyp