2016-03-22 101 views
0

由于缺乏更好的术语,我对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; 
} 

有创建临时对象是在一个Example对象通过一个char *转换许多功能。

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

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

+0

目前尚不清楚你的问题是什么。你想要删除什么?类Example或const char *的调用实例传递给构造函数。请提供方法和示例用法的实现。 – Sid

+0

什么是*调用实例*? – SergeyA

+1

而不是提供方法本身,你应该可以解释你想要实现的。 –

回答

0

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

delete this; 

推荐这是一个很好的做法是完全不同的事情...一般是不是一个很好的主意自杀,很可能预示在一定的过错你组织内存管理的方式。

+0

这将工作在我更新的问题,我把我已经在我的应用程序中工作? – DrakeJacks

+0

你在做什么看起来很奇怪。 'Example&copy(const char *)的倾向是什么?''?为什么不使用构造函数'Example(const char *);'? –