我知道 C++ 中按值、指针和引用传递的区别,我认为在 C++ 中按值(而不是 const 引用)传递对象几乎总是一个编程错误。
void foo(Obj o); ... // Bad
void foo(const Obj &o); ... // Better
我能想到的唯一可能适合按值传递而不是 const 引用的情况是对象小于引用的情况,因此按值传递更有效。
但是,这肯定是编译器旨在确定的那种事情吗?
为什么 C++ 实际上需要按值传递和按 const 引用传递,并且 - 如果合适,编译器是否允许自动将调用转换为(和来自)const 引用?
(似乎有 100 多个 C++ 调用约定问题,询问(比如说)值和引用之间的区别——但我找不到一个问“为什么?”的问题。)