c++ c++-faq copy-constructor assignment-operator rule-of-three
我现在真的很困惑如何以及使用哪种方法从函数返回对象.我想要针对给定要求的解决方案提供一些反馈.
场景A:返回的对象将存储在一个变量中,该变量在其生命周期内无需修改.从而,
const Foo SomeClass::GetFoo() {
return Foo();
}
Run Code Online (Sandbox Code Playgroud)
调用为:
someMethod() {
const Foo& l_Foo = someClassPInstance->GetFoo();
//...
}
Run Code Online (Sandbox Code Playgroud)
Scneraio B:返回的对象将存储在一个变量中,该变量将在其生命周期内被修改.从而,
void SomeClass::GetFoo(Foo& a_Foo_ref) {
a_Foo_ref = Foo();
}
Run Code Online (Sandbox Code Playgroud)
调用为:
someMethod() {
Foo l_Foo;
someClassPInstance->GetFoo(l_Foo);
//...
}
Run Code Online (Sandbox Code Playgroud)
我在这里有一个问题:让我们说Foo不能有默认的构造函数.那么在这种情况下你会怎么处理呢,因为我们不能再写这个了:
Foo l_Foo
Run Code Online (Sandbox Code Playgroud)
场景C:
Foo SomeClass::GetFoo() {
return Foo();
}
Run Code Online (Sandbox Code Playgroud)
调用为:
someMethod() {
Foo l_Foo = someClassPInstance->GetFoo();
//...
}
Run Code Online (Sandbox Code Playgroud)
我认为这不是推荐的方法,因为它会导致构建额外的临时工.
你怎么看 ?另外,您是否建议使用更好的方法来处理此问题?