私はそれがこのようなことについて話していると思います:
class A;
class B {
public:
A * m_a;
B(A * a) : m_a(a) {}
};
Class A {
public:
int m_num;
A(int num=0) : m_num(num) {}
void DoSomethingConst(B * someB) const;
};
void SomeOtherFunction()
{
A myA;
B myB(&myA);
//do something with myA.m_num (1)
myA.DoSomethingConst(&myB);
//do something else with myA.m_num (2)
}
の内部でSomeOtherFunction
は、コンパイラは(1)の間にレジスタに値を保存し、myA.m_num
(2)の間にそれを再び使用することはできません。の値を変更する必要はありませんが、DoSomethingConst
内部への非定数ポインタがあるため、値は変更される可能性があり、そのため、の間に変更される可能性があります。この場合、への非定数参照があることを証明するのは簡単ですが、一般的な場合はそうではありません。 const
myA.m_num
myA
myB
myA.m_num
myA.DoSomethingConst
myA