2016-03-22 98 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 *);'? –