次のケースを検討してください
void func(const A& a)
{
//Case 1:
const int& val = a->b->c->d;
func1(val);
func2(val);
//Case 2:
func1(a->b->c->d);
func2(a->b->c->d);
//Case3:
int val = a->b->c->d;
func1(val);
func2(val);
}
読みやすさに関しては、Case3が最も簡単です
速度について、まともなコンパイラの場合、上記のすべてのケースは同等ですか? そうでない場合、どちらが最速で最も遅いですか?
すべてのポインターが生のポインターであり、ヒープ内のオブジェクトを指していると仮定します。
更新: 引数がconst
上記のようなものであると仮定すると、func1 と func2 は値または const 参照のいずれかで引数を取ることができます。