【发布时间】:2020-07-29 16:04:54
【问题描述】:
SomeStruct getSomeStruct();
const SomeStruct a = getSomeStruct();
const SomeStruct &b = getSomeStruct();
我了解按值传递与按引用与按常量引用之间的区别。我的问题是,上面的示例与将参数传递给函数时相同吗?所以b的赋值更快,因为它不需要复制数据,不像a的赋值?
【问题讨论】:
-
这取决于
getSomeStruct本身的签名。但是是的,假设完整签名是const SomeStruct& getSomeStruct(),那么b正在避免复制。 -
请注意,在这两种情况下都没有赋值,只有初始化。
-
@CoryKramer 我在帖子中添加了函数的签名
-
a的初始化也不需要复制 - 对象的创建方式与b绑定的(临时)对象完全相同。现代编译器非常聪明。
标签: c++