为什么我可以从const方法内部的ref成员调用non 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);
}
最佳答案
const A &
的意思是“对const A的引用”A &
的意思是“对可变A的引用”
引用无法重新分配,因此A &
也隐式表示“对可变A的const引用”。