C++ 参考文献仍然让我感到困惑。假设我有一个创建 Foo
类型对象并通过引用返回它的函数/方法。(我认为如果我想要返回对象,它不能是分配在堆栈上的局部变量,所以我必须使用 new
在堆上分配它):
Foo& makeFoo() {
...
Foo* f = new Foo;
...
return *f;
}
当我想要将在另一个函数的本地变量中创建的对象存储时,类型应该是Foo
吗?
void useFoo() {
Foo f = makeFoo();
f.doSomething();
}
还是Foo&
?
void useFoo() {
Foo& f = makeFoo();
f.doSomething();
}
既然两种语法都是正确的,那么这两种变体之间有显著的区别吗?
Foo& f = makeFoo();
版本可能不会编译。 - Lightness Races in Orbitstd::vector
,内部仅是一些指针。但是这些指针可以引用大量的数据。通过简单地复制和将指针设置为 null 即可移动向量。 - Benjamin Lindley