メンバ関数にconst修飾って何ぞやとという質問を受けました。メンバ変数を変更できないよって印…なのは分かっているのだそう。ここで、もう少しC++と仲良くなるために、もう少し深く彼らと付き合ってみたいと思います。オマケで、&(&&)修飾子についても考えます。 メンバ関数に付ける修飾子は、static, virtual, inline/constexpr, const/volatile, &/&&, noexcept/throw, override/final があります。このうち、今回取り扱うconst/volatile, &/&&は似た特性のものであるため、一緒に扱いたいと思います。 これら修飾子が実際に修飾するのは、メンバ関数に暗黙的に渡される第0引数とも言うべき、thisポインタです。 このthisポインタさえ解決してしまえば、メンバ関数も通常の関数と同じように扱うことができます。