当传递像int或float这样的基本类型时,写这样的东西是浪费精力:
foo(const float&);
而不仅仅是传递价值:
foo(float);
答案 0 :(得分:3)
对于花车? Yes, pretty much.
这里没有任何好处:浮点数很小,副本不会比创建实现引用的指针慢。
答案 1 :(得分:2)
这取决于引用的实现。根据标准(§8.3.2/ 4):
从理论上讲,未指明引用是否需要存储(3.7)。
引用可以使您免于float
的副本。当然,如果将引用实现为指针,那将是徒劳的。因此答案取决于实现。
大多数情况下,这种微优化没有多大意义。我非常怀疑你的应用程序的瓶颈在float
的副本中。
答案 2 :(得分:1)
请记住,在某些情况下,按值传递可以实现更广泛的编译器优化。 Chandler Carruth(Clang成名)谈到了优化编译器在处理keynote at C++ Now 2013中对象的引用/指针时遇到的一些困难。
答案 3 :(得分:0)
当传递像float这样的基本类型时,通过const引用传递任何东西都无济于事。按值传递几乎完成相同的事情 - 对参数值的任何更改都不会影响调用函数中的值(如果按值调用) - 不能对参数进行更改(如果通过const引用调用)
但是,对于类,传递const类引用比传递值(它必须复制对象)要高效得多。