【发布时间】:2011-09-26 21:42:24
【问题描述】:
一直有人告诉我,我们不应该通过引用传递 POD。但最近我发现引用实际上根本不占用内存。
那我们为什么选择写作:
void DoSomething(int iNumber);
代替:
void DoSomething(const int& riNumber);
不是更有效率吗?
【问题讨论】:
-
检查这个question out
-
谁告诉你引用不占用内存?这不是普遍正确的,事实上,非内联函数的引用参数确实需要额外的内存。
-
内置类型和 POD 是有区别的。 POD 类可以占用多少内存没有限制(据我所知)。如果它很大,参考绝对是一个好主意。例如,Windows API 经常使用大型 POD 类型。
-
由于引用通常是指针的语法糖,我很确定引用将在堆栈上占用
sizeof(void *)字节。当然,这一切都取决于你的实现,但不是用魔法尘埃做的。 -
因为在某些情况下
const int&的值是int的两倍。 POD 通常可以按值传递,除非您实际上想要对先前实例化的变量进行非常量引用,以便函数可以更改它的值。
标签: c++