constメソッド内のrefメンバから非constメソッドを呼び出せるのはなぜですか? m_aが参照型でない場合のように、コンパイルエラーが発生することが予想されます。 http://cpp.sh/C++なぜconstメソッド内のrefメンバから非constメソッドを呼び出すとコンパイルエラーが発生しない
// 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);
}
@juanchopanza:私は多分Dのように(私は本当にDを知らないが、私はアンドレイ・A.がDで推移const性に働いていたことを知っている)、OPは '推移としてconst'を想定していると思います。 –
@juanchopanza m_aが参照型でない場合のようにコンパイルエラーが発生することが予想されます。 –
@juanchopanza完了。 –