Nav*_*Nav 10 c++ performance reference
可能的重复:
如何将对象传递给C++中的函数?
是否有任何特定的情况,其中pass-by-value比C++中的pass-by-const-reference更受欢迎?
我有一个像这样实现的类的成员:
void aaa(int a, float b, short c)
{
bbb(a, b);
}
void bbb(int a, float b)
{}
Run Code Online (Sandbox Code Playgroud)
如果a,b和c的值作为常量存储在我的类中,那么使用我的函数如下所示或如上所示更好/更明智吗?
void aaa(int& a, float& b, short& c)
void bbb(int& a, float& b)
Run Code Online (Sandbox Code Playgroud)
在这种情况下,使用引用是否提供任何速度优势或优势?这里引用的任何缺点/开销?
小智 6
Standard对引用的实现没有任何限制,但是通常将它们实现为自动取消引用的指针(实际上有一些例外)。您可能知道,在32位系统指针的大小为4个字节时,这意味着通过引用传递字符,短裤(sizeof()小于4个字节的类型)可能会被认为是过分杀人-使用4个字节而不是1个(字符)或2(短)。通常,这取决于是否使用约束或堆栈来传递参数:在通过值传递基本类型时,您可以节省一点堆栈,但是对于寄存器(即使是char),也将使用4个字节,因此没有意义尝试使用ptrs / refs优化某些内容。
如果您使用参考文献,请使其const:
void bbb(const int & a, const float & b);
Run Code Online (Sandbox Code Playgroud)
否则,语义将与按值传递不同,因为函数可能会更改传递给参数的变量的值。这意味着您不能使用文字作为参数。
| 归档时间: |
|
| 查看次数: |
7860 次 |
| 最近记录: |