関数にオブジェクトを値渡しするのは、効率が悪い特に大量のデータがある時
だからオブジェクト参照で渡すのが最良のの方法だ。
ただし参照には、関数に引数の書き変えを許すという問題がある。例えば2つの円の交差を
判定するIntersects関数が、2つのCircleオブジェクトを受け取ると考えよう。
この関数が、もしそれらの円を参照で受け取るとしたら、その円の中心または半径を書き換えてられることになる
この問題を解決するには、const(定数)参照を使う。const参照は、その関数に参照の読出しは許すが、
書き込みは許さない。したがって、Intersectsを正しく宣言するには次のようにconst参照を使う。

また、メンバー関数がメンバーデータを書き換えないことを保証するには、そのメンバー関数をconstにする。
例えばCircleのGetRadius関数は、メンバーデータを書き換えるべきではないから、
constメンバー関数にすべきである。メンバー関数をconst宣言するには、その関数宣言の閉じカッコの直後にconst
というキーワードを追加する(以下のように)。

まとめると、参照、const、クラスに関するベストプラクティスは次のものだ。
❏基本型以外のデータについて、コピーが作られるのを防ぐには、参照か、const参照か、ポインタを渡す。
❏関数が参照引数を書き換える必要がない時は、const参照で渡す。
❏メンバーデータを書き換えないメンバー関数は、constにする。