我想知道哪个更好,通过值或C ++中的引用发送参数。我听说有些情况下按值发送比通过引用发送更快。这些是哪些情况?
由于
答案 0 :(得分:1)
显而易见的情况是,当参数等于或小于指针大小为且微不足道时要复制 - 那么你将通过值传递。然而,这是一个古老的讨论,需要相当长的答案才能正确回答给定的体系结构。还有许多极端情况(例如RVO)。
问题不仅仅是速度 - 语义应该是你的第一要务。
另请参阅:Is it better in C++ to pass by value or pass by constant reference?
答案 1 :(得分:1)
作为一般规则,您应该通过const引用按值和复杂类型传递POD类型。
也就是说,按值传递复杂类型的好地方是无论如何都需要函数内部对象的副本。在这种情况下,您有两种选择:
将参数作为const引用传递,并在函数
按值传递参数(编译器创建本地副本)。
第二种选择通常更有效。有关示例,请参阅copy&swap idiom。