正在销毁调用实例

Destroying the Invoking Instance

本文关键字:调用 实例      更新时间:2023-10-16

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

下面是一个类示例

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;

推荐这是一个好的做法是完全不同的事情。。。一般来说,这不是一个很好的主意,它可能表明您组织内存管理的方式存在一些错误。

相关文章: