由于通过引用传递没有复制过程,如果我使用仅通过引用传递(当满足情况时)所有函数,性能会提高吗? (这有所不同)
(据我在Cpp编程中学到的,传递值意味着复制值并将其传递给函数,而通过引用传递意味着为变量创建另一个“占位符”或“名称”而不复制值。)
答案 0 :(得分:1)
除非编译器对参数进行了优化(也可以使用pass-by-value),否则每个"引用"在内部只是一个指针。
因此,假设64位指针,如果你通过引用传递一个复制&lt;的对象,它可能会损害性能。复制时为8个字节(大小为<8字节的基本类型,或者没有复杂复制构造函数的用户定义类)。
当然,您应该始终对代码进行分析,以确定是否存在任何明显的差异。如果功能足够大,差异可以忽略不计;如果函数很小,你应该只允许编译器内联它,使参数传递方法无关紧要。
对于(大)大于8字节的用户定义类,或者具有复杂的复制构造函数,pass-by-reference通常比pass-by-value更快。