漏れは値渡しの最適化とみなせる場合と例外のcatchの場合、それに
構文上必要な場合(コピーコンストラクタや演算子定義)はconst
参照にして、ポリモーフィズムを使う場合やオブジェクトの同一性
が問題になる時はポインタ渡しにしている。
このくらいが妥当じゃないかなあ。