C++ 从函数转移返回的唯一\u ptr的所有权 A类{}; 无效使用(常量A&){} 独一无二的我的乐趣(){ 返回make_unique(); } int main(){ const A&rA=*my_fun();//错误:对象将被销毁 使用(rA); const auto rA1=my_fun();//复制唯一的副本。转移所有权 使用(*rA1); const auto&rA2=我的乐趣(); 使用(*rA2); 返回0; }
C++ 从函数转移返回的唯一\u ptr的所有权 A类{}; 无效使用(常量A&){} 独一无二的我的乐趣(){ 返回make_unique(); } int main(){ const A&rA=*my_fun();//错误:对象将被销毁 使用(rA); const auto rA1=my_fun();//复制唯一的副本。转移所有权 使用(*rA1); const auto&rA2=我的乐趣(); 使用(*rA2); 返回0; },c++,unique-ptr,C++,Unique Ptr,rA不工作,因为返回的指针将被破坏rA1工作正常,因为所有权的转移保留了对象。我的问题是关于rA2的。它是返回的unique\u ptr的别名,对吗?为什么对象没有被销毁,比如在rA的情况下?可能重复的对象的可能重复 class A{}; void use(const A&){} unique_ptr<A> my_fun(){ return make_unique<A>(); } int main(){ const A& rA = *
rA
不工作,因为返回的指针将被破坏rA1
工作正常,因为所有权的转移保留了对象。我的问题是关于rA2的。它是返回的unique\u ptr
的别名,对吗?为什么对象没有被销毁,比如在rA
的情况下?可能重复的对象的可能重复
class A{};
void use(const A&){}
unique_ptr<A> my_fun(){
return make_unique<A>();
}
int main(){
const A& rA = *my_fun(); //Error: object will be destructed
use(rA);
const auto rA1 = my_fun(); //make a copy of the unique_ptr. transfer the ownership
use(*rA1);
const auto& rA2 = my_fun();
use(*rA2);
return 0;
}