考虑以下情况
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);
}
wrt 可读性,Case3 是最直接的
为了加快速度,对于一个体面的编译器,以上所有情况都等效吗?如果不是,它们中的哪一个是最快的和最慢的?
假设所有指针都是原始指针并且它们指向堆中的对象。
更新:假设参数是const
一个如上所示的参数,因此 func1 和 func2 可以通过值或 const 引用来获取参数。