相关疑难解决方法(0)

什么是三法则?

  • 什么是抄袭的对象是什么意思?
  • 什么是复制构造函数复制赋值运算符
  • 我什么时候需要自己申报?
  • 如何防止复制对象?

c++ c++-faq copy-constructor assignment-operator rule-of-three

2067
推荐指数
8
解决办法
27万
查看次数

从函数返回对象

我现在真的很困惑如何以及使用哪种方法从函数返回对象.我想要针对给定要求的解决方案提供一些反馈.

场景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)

我认为这不是推荐的方法,因为它会导致构建额外的临时工.

你怎么看 ?另外,您是否建议使用更好的方法来处理此问题?

c++ memory return-value pass-by-reference

19
推荐指数
1
解决办法
1万
查看次数