为什么我可以从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引用”。

10-04 21:33