销毁调用实例

时间:2016-03-22 21:11:22

标签: c++ oop delete-operator

由于缺乏更好的术语,我是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调用实例,我不知道如何。

1 个答案:

答案 0 :(得分:0)

从法律上讲,对象可以通过

自杀
delete this;

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