【发布时间】:2017-03-12 20:46:26
【问题描述】:
我知道当一个方法同时存在具有相同名称和参数的 const 和非 const 版本时,选择的版本由 *this 的 const-ness 决定。 (方法的常量是签名的一部分吗?)
但是当它被另一个方法调用时会发生什么?
一个例子
class a{
void b() const{
c();
//do fantastic things
}
const_iterator c() const;
iterator c();
};
当我从 a 的非常量实例调用 b() 时,我如何知道调用了哪个版本的 c()?
【问题讨论】:
-
"方法的常量是签名的一部分,对吗?"是的,左值/右值限定也是如此
-
当我从 a 的非常量实例调用 b() 时,我如何知道调用了哪个版本的 c()? ...
const方法只能调用其他const方法,所以b() const只能调用c() const。