c++ - 对于基本数据类型,按值传递还是按引用传递更好?

标签 c++ performance reference

<分区>

Possible Duplicates:
How to pass objects to functions in C++?
is there any specific case where pass-by-value is preferred over pass-by-const-reference in C++?

我有一个这样实现的类的成员:

void aaa(int a, float b, short c)
{
  bbb(a, b);
}

void bbb(int a, float b)
{}

如果 a、b 和 c 的值作为常量存储在我的类中,那么使用我的函数是否更好/明智,如下所示或如上所示?

void aaa(int& a, float& b, short& c)
void bbb(int& a, float& b)

在这种情况下,使用引用是否会带来任何速度优势或优势?这里引用的任何缺点/开销?

最佳答案

标准对引用的实现没有限制,但通常它们被实现为自动解除引用的指针(实际上有一些异常(exception))。您可能知道,在 32 位系统上,指针大小为 4 个字节,这意味着通过引用传递 chars、shorts(sizeof() 小于 4 个字节的类型)可能被认为有点矫枉过正——使用 4 个字节而不是 1 个(char)或 2(短)。 通常,这取决于寄存器或堆栈是否用于传递参数:按值传递基本类型时可以节省一点堆栈,但在寄存器的情况下,即使是字符,也将使用 4 个字节,因此没有意义尝试使用 ptrs/refs 优化某些东西。

关于c++ - 对于基本数据类型,按值传递还是按引用传递更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4112914/

相关文章:

c++ - 如何在这个 while 循环中找到迭代次数 - 操作计数

C++:右对齐字段输出

c++ - Eigen dense matrix * dense vector multiplication 应该比 GSL 慢 7 倍吗?

c++ - 为什么 std::u16string 比 char16_t 数组慢?

java - 堆分配和合适的硬件

c++ - parallel_invoke 待定中的相同方法

javascript - 在服务器中构建 html 并绑定(bind)到 ng-repeat

c# - 将字节引用从 c# 传递到非托管 cpp COM dll

matlab - 如何在 matlab 中传递空引用以便 isa 返回 true?

visual-studio - VS2010 项目 -- 未解析的引用(其中缺少 HintPath 属性)