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

标签 c++ memory operator-overloading type-conversion memory-leaks

我想让我的 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;
}

关于C++ 类型转换运算符和内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6395483/

相关文章:

c++ - 什么是 do(keyword) c++?

c++ - 转化和推广是一回事吗?

android - Android Wear 是否支持 Android Studio 中的 C++ (JNI)?

c - 为什么我可以相信内存分配?

image - PDFBox 添加图像时内存不足

c++ - 有没有更好的方法来编写这个模板?

c++ - 这是 std::vector 的正常行为吗?

scala - 重载复合运算符,例如 +=

c++ - 如何为表示动态分配的二维数组的类重载 [][] 运算符

swift 2.0 : Parametrized classes don't call proper == function if it inherits from class that is Equatable