C语言传参效率提高的实现方法
当按值传递参数时,如果传递的参数在函数中没有被修改,const引用可以提高效率。
class Cclass {
......
};
void func 1(Cclass a);//直接传值
void func 2(const Cclass & b);// const reference
当func1被调用时,一个Cclass对象被推入堆栈,这将引起copy-construct的调用,从而在函数内部生成一个临时对象。当函数返回时,释放对象将导致析构函数被调用。对于func2,调用时只将一个地址推入堆栈,从而节省了func1中的开销。但是使用引用传递参数有一个缺点,就是这个函数对程序员隐藏了它是一个地址的事实。
比如有一个函数定义如下:
void foo(Cclass & a);
正在使用的调用如下:
Cclass ca;
foo(ca);//这个时候可能会误认为只传入了值。如果在此函数中更改ca的值,将会导致意外错误。
/调试也很难。
解决方法是统一函数定义习惯:
指向函数中要修改的参数;未修改的参数是常量引用。
0条评论