c++中函数参数里，是否能用 const reference 的地方尽量都用？在能用 const reference 的地方都用 const reference，这样做会有什么坑吗？
在 const reference 替代值的情况下，如果不考虑性能，可以尽量都用。考虑性能的话， **部分情况** 使用值传递性能更高。因此建议采用值传递。

为什么对于小数据来说，应该用值传递呢？因为值传递可以全部塞进寄存器，而引用传递意味着必然有一次无法优化掉的内存访问寻址，对于现代CPU以及现代编译器来说，能全进寄存器的操作肯定是最高效率。

具体多少数据算小数据呢？取决于你的编译器支持的CPU体系，以及目标CPU架构，总共支持放多少参数进寄存器。你需要对你的目标机器测试才知道。一般而言，如果所有参数的长度加起来在四个机器字长以内，可以算作小数据，建议值传递，反之则建议引用传递。

但如果你问的是 const reference 能不能取代非 const 的 reference ，那如果参数指定为reference，则必须传递一个变量作为参数。但如果参数指定为 const reference，就可以允许使用常量或者文字量作为参数。因此 constreference 适用场景更广一些。

总的来说：

- 如果你是在考虑用普通引用vs常量引用，那么只要可能，就应该用常量引用。

- 如果你是在考虑用值传递vs常量引用，那么只要数据尺寸够小，建议用值传递。