Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 写foo(constfloat&;)是浪费精力吗?_C++ - Fatal编程技术网

C++ 写foo(constfloat&;)是浪费精力吗?

C++ 写foo(constfloat&;)是浪费精力吗?,c++,C++,当传递诸如int或float之类的基本类型时,编写这样的内容是否浪费了精力: foo(const float&); 而不仅仅是通过值传递: foo(float); 花车 这里没有什么好处:float很小,复制速度不会比创建指针来实现引用慢。当传递float之类的基元类型时,按常量引用传递没有任何帮助。按值传递完成了几乎相同的事情-对参数值所做的任何更改都不会影响调用函数中的值(如果按值调用)-不能对参数进行任何更改(如果按常量引用调用) 然而,对于类,传递const类引用要比通过值传

当传递诸如int或float之类的基本类型时,编写这样的内容是否浪费了精力:

foo(const float&);
而不仅仅是通过值传递:

foo(float);
花车


这里没有什么好处:float很小,复制速度不会比创建指针来实现引用慢。

当传递float之类的基元类型时,按常量引用传递没有任何帮助。按值传递完成了几乎相同的事情-对参数值所做的任何更改都不会影响调用函数中的值(如果按值调用)-不能对参数进行任何更改(如果按常量引用调用)


然而,对于类,传递const类引用要比通过值传递(必须复制对象)有效得多。

这取决于引用的实现。根据标准(§8.3.2/4):

未指定引用是否需要存储(3.7)

理论上,引用可以将您从
float
的副本中解救出来。当然,如果引用被实现为指针,那么这将是徒劳的。因此,答案取决于实现


大多数时候,这种微观优化没有多大意义。我非常怀疑应用程序的瓶颈在于
float

请记住,在某些情况下,传递值可能实现更广泛的编译器优化。Chandler Carruth(来自Clang fame)谈到了优化编译器在处理引用/指向对象的指针时所面临的一些困难。