C++のconstについて

値クラスにおけるconst、インタフェースクラスのポインタをconstで保持するというのは分かってきた。

今は、インタフェースクラスの中の関数について悩んでいる。これらがconstになる条件とは何だろうか?

以前プログラムを作ったときは、とりあえず、get系の関数をconstにした。でも、効果があった(意図していることを表現したことで、プログラムの複雑度を下げた)と感じることはあまりなかった。そもそも、関数を適用して状態が変わるかどうかなんてのは、実装の概念のようにも思う。C++では、インタフェースに実装の一部が含まれることが多いので、それも問題をややこしくしている。

純粋にインタフェースの関数の意味として、constを付加できると良いと思う。例えば、

・実行の結果が、コンテキストに依存する関数とそうでない関数。
・実行の可否が、コンテキストに依存する関数とそうでない関数。
・実行によって、コンテキストを変更する関数とそうでない関数。

こういう関数の区別を、constを使って表現できたら良いのだけれど。