【发布时间】:2015-05-22 09:29:46
【问题描述】:
关于对象(尤其是字符串),按引用调用比按值调用更快,因为函数调用不需要创建原始对象的副本。使用 const 还可以确保引用不被滥用。
我的问题是,如果使用基本类型(如 bool、int 或 double),const 引用调用是否也更快。
void doSomething(const string & strInput, unsigned int iMode);
void doSomething(const string & strInput, const unsigned int & iMode);
我的怀疑是,只要原始类型的字节大小超过地址值的大小,就使用引用调用是有利的。即使差异很小,我也想利用它,因为我经常调用其中一些函数。
附加问题:内联对我的问题的答案有影响吗?
【问题讨论】:
-
大多数时候应该没有效果。但是针对特定案例进行分析会很好。我通过值传递原始类型,通过 const 引用传递对象。内联不应该改变任何东西。
-
重要的是要理解它们不是一回事(参考stackoverflow.com/questions/4705593/int-vs-const-int 例如)。选择符合您需求的那个 - 如果按值传递就足够了,那么就这样做 - 如果需要通过引用传递,那么就这样做。
标签: c++ performance call-by-value