C++のconstについて
値クラスにおけるconst、インタフェースクラスのポインタをconstで保持するというのは分かってきた。
今は、インタフェースクラスの中の関数について悩んでいる。これらがconstになる条件とは何だろうか?
以前プログラムを作ったときは、とりあえず、get系の関数をconstにした。でも、効果があった(意図していることを表現したことで、プログラムの複雑度を下げた)と感じることはあまりなかった。そもそも、関数を適用して状態が変わるかどうかなんてのは、実装の概念のようにも思う。C++では、インタフェースに実装の一部が含まれることが多いので、それも問題をややこしくしている。
純粋にインタフェースの関数の意味として、constを付加できると良いと思う。例えば、
・実行の結果が、コンテキストに依存する関数とそうでない関数。
・実行の可否が、コンテキストに依存する関数とそうでない関数。
・実行によって、コンテキストを変更する関数とそうでない関数。
こういう関数の区別を、constを使って表現できたら良いのだけれど。