为什么我可以在const方法中从ref成员调用非const方法? 如果m_a不是引用类型,我应该得到编译错误。 在http://cpp.sh/
上运行// Example program
#include <iostream>
class A
{
public:
void nonConstMethodOfA()
{
std::cout << "nonConstMethodOfA is called" << "!\n";
}
};
class B
{
public:
B(A& a)
: m_a(a)
{
constMethodOfB();
}
private:
A& m_a;
void constMethodOfB() const
{
m_a.nonConstMethodOfA();
}
};
int main()
{
A varA;
B varB(varA);
}
答案 0 :(得分:2)
const A &
表示&#34;对const A&#34;
A &
表示&#34;对可变A&#34;
无法重新分配引用,因此A &
也隐式表示对可变A&#34;的const引用。
答案 1 :(得分:1)
Const成员函数意味着您的this
将指向一个const对象,因此只有this->fn()
为const时才能调用fn()
。它不会锁定类型,也不会锁定任何类似类型的输入参数或全局变量。但是,如果您愿意,也可以将它们指定为const。