通常,传递时会复制参数值.使用引用可以节省内存,特别是对于大结构.但是,在这种情况下:
void foo( int parameter = 7 );
void bar( const int& parameter = 7 );
在第二个声明中,当使用默认值时它究竟会做什么?将常量值用于参考参数时会发生什么?
void foo( const int& parameter ) { }
...
foo( 7 );
当使用有效值时,参考值和复制值之间的效率是否存在差异?
解决方法:
1)它会做同样的事情,就好像它不是const&.你无法修改const&参数,所以你可以将它们绑定到constants1.
2)效率可能存在非常微小的差异,因为您实际上(可能是依赖于实现)将指针传递给值而不是值,因此您必须取消引用指针才能获得实际值. (然后再次,编译器可以看到通过const引用传递int是浪费时间,所以它将按值传递事物,并假装它是由const引用.你无法知道.)这种牺牲可能是值得的它适用于较大的构造,但通常你不需要通过const引用传递类似int的东西.
1 mcmcc指出,在整数文字的情况下,您实际上是将引用绑定到堆栈上的某个位置(例如,与字符串文字不同,它位于静态内存中).