销毁调用实例

Destroying the Invoking Instance

我是 OOP 领域的新手,因为没有更好的术语。

所以这是一个 class 示例

class Example{
public:
    Example(const char *);
    ~Example(); //Calls Destroy in Body
    Example & copy(const char *);
    Example & copy(const Example &);
private:
    void destroy();
    char * data;
    unsigned int size;
};

这是我在下面谈论的临时对象的示例。

    Example & Example::copy(const Example & oldString) {
    size = oldString.getSize();
    data = new(std::nothrow) char[size];
    if (data != NULL){
        for (int i = 0; i <= size; i++){
            data[i] = oldString.data[i];
        }
    }
    else{
        std::cout << "Data could not be initiallized with a size of" << oldString.getSize() << std::endl;
    }
    destroy();
    return *this;
}
Example & Example::copy(const char * oldString){
    Example newCopyString(oldString);
    copy(newCopyString);
    return *this;
}

有许多函数可以创建临时对象以将传入的 char * 转换为 Example 对象。

所以我需要一种方法来删除 copy(const char * oldString) 中的这个对象。

如问题所述,我正在尝试 delete 调用实例,但我不知道如何。

从法律上讲,一个物体可以通过

自杀
delete this;

将此作为良好做法推荐是完全不同的事情...一般来说这不是一个好主意,它可能表明您组织内存管理的方式存在问题。