微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决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
的析构函数称为自动变量。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。