C ++类型转换运算符和内存泄漏

| 我想允许我的Class1通过类型转换运算符转换为Class2:
class  Class1     {
public:
    operator Class2() const {
      //....
    }
}
但是,如果我在运算符实现中创建Class2对象,则很可能不会被调用方删除。那么实现这种功能的最佳方法是什么?     
已邀请:
        如果您像这样疯狂地进行操作,则只需要删除即可:
operator Class2() const
{
    Class2 *p = new Class2();
    ...
    return *p;
}
但是,以下方法可以:
operator Class2() const
{
    Class2 c2;
    ...
    return c2;
}
    
        您不应在堆上分配内存,而应在堆栈中创建Class2。然后它将在函数退出时销毁。     
        你应该做这样的事情
operator Class2() const 
{
    Class2 tmp;
    ...
    return tmp;
}
那你有这样的话
Class1 c1;
Class2 c2 = c1;
for5ѭ的内存将在堆栈中分配,然后将调用
Class2
的复制构造函数将to5ѭ复制到
c2
,然后将
tmp
的析构函数称为自动变量。     

要回复问题请先登录注册