c++中delete具體干什么事?只是將呼叫解構式的步驟封裝了一下嗎?如果我寫一個public介面專門手動呼叫解構式,是否可以代替delete呢?
class MyClass
{
protected:
char* str;
public:
MyClass() { cout << "構造" << endl; str = new char[100]; }
~MyClass() { cout << "析構" << endl; delete str; str = nullptr; }
void myCle() { this->~MyClass(); }
};
int main()
{
MyClass *p = new MyClass;
p->myCle();
//delete p;
return 0;
}
uj5u.com熱心網友回復:
建議看一下 c++基礎;一個類的指標被釋放,需要手動delete;一個是類里面成員是指標在 解構式被釋放,兩個根本就不一樣uj5u.com熱心網友回復:
解構式是用來清理類物件中的指標動態分配的記憶體空間的。不能清理類物件自身占用的空間。
Delete函式可以。
uj5u.com熱心網友回復:
delete主要做兩件事,呼叫解構式p->~MyClass(),以及呼叫free(p);如果new []時,需要用delete[],delete[]會根據new時記錄的個數,回圈呼叫解構式。
uj5u.com熱心網友回復:
普通使用時不建議自己操作,因為存在記憶體釋放問題。你現在希望自己管理記憶體。可以參考 new多載那方向的知識。
uj5u.com熱心網友回復:
delete干兩件事:第一,釋放記憶體
第二,呼叫解構式
uj5u.com熱心網友回復:
謝謝啦,明白了
uj5u.com熱心網友回復:
確實遇到情況需要手動呼叫解構式使用,我去看看相關知識,謝謝啦
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/165192.html
標籤:C++ 語言
上一篇:新手求解c++簡單問題
