C++ 什么时候调用右值析构函数/这可以吗

C++ 什么时候调用右值析构函数/这可以吗,c++,oop,c++11,destructor,rvalue,C++,Oop,C++11,Destructor,Rvalue,下面的包装类是否是一种“确定”的方法,可以使用std::unique_ptr来保持中间对象访问me成员而不复制me? 这是一个例子 #包括 #包括 /*另一个图书馆的myobj*/ myobj类{ 公众: std::string me;/*实际感兴趣的成员越来越大 复杂,我不想复制我或myobj*/ /*实际班级中有更多的成员*/ myobj(标准::字符串i_am){ /*构造函数中发生了更多的事情*/ 我=我是; } ~myobj(){ 我不确定,但以下是我的观点: who_is_this(

下面的包装类是否是一种“确定”的方法,可以使用
std::unique_ptr
来保持中间对象访问
me
成员而不复制
me

这是一个例子

#包括
#包括
/*另一个图书馆的myobj*/
myobj类{
公众:
std::string me;/*实际感兴趣的成员越来越大
复杂,我不想复制我或myobj*/
/*实际班级中有更多的成员*/
myobj(标准::字符串i_am){
/*构造函数中发生了更多的事情*/
我=我是;
}
~myobj(){

我不确定,但以下是我的观点:

who_is_this(myobj_wrapper("Alice").who);
这将创建一个包装器对象,该对象将字符串文字作为其参数。然后,将动态创建一个
myobj
实例,并将其交给一个唯一指针。通过该实例,我们将获得其数据(字符串),并使包装器类的传统指针指向它。因此,现在,
who
指向
me
,即Alice

我们将
who
(指针)传递到:

这意味着函数的参数
who
不是副本,而是指向原始数据

所以现在整个问题是包装器对象何时会超出范围(因此它的数据成员(唯一指针)也将超出范围,这意味着动态创建的
myobj
实例将被垃圾收集,这反过来意味着
me
也将超出范围,
who


who\u is\u this()之后,包装器对象将超出范围
被执行,这意味着你的代码是正常的。

代码在我看来是正常的。虽然我必须承认我没有完全理解这个练习的要点。我不理解这个问题,这应该是一个解决方案。你说的右值析构函数是什么意思?我指的是
中动态分配的对象这是谁(myobj_包装(“Alice”)。谁)
“在执行
who_is_this()
后,包装器对象将超出范围,这意味着您的代码正常”酷,谢谢你的回答!Thx。我想可能有人会添加关于陷阱的注释。我想没有。具体的例子是我使用犰狳库的地方。请参阅
map_res
类和
lp_map
方法。有时需要一个新的
arma::vec
,而在其他时候则不需要创建一个新对象。(忽略类上方的注释——它是错误的)。
who_is_this(myobj_wrapper("Alice").who);
void who_is_this(std::string *who)