c 解構函式的問題,C 關於解構函式的幾個問題

2022-05-30 07:46:54 字數 2128 閱讀 2232

1樓:_鈊_煩_薏亂

比如說,你的類裡邊有個char*你對它動態分配了記憶體,如果沒有解構函式,你是不是要在delete這個類的指標物件之前先delete這個char*的記憶體?

現在有了解構函式,在解構函式中刪除char*的記憶體。這樣你之用delete一次就所有問題都搞定了,何樂而不為呢?

2樓:

解構函式是在這個類的生命期結束後自動呼叫的即使你不寫系統也會給你產生個預設的。

解構函式內的是寫 在這個類的物件即將消失的時候應該做的事可以不要delete語句

3樓:匿名使用者

delete 會呼叫折夠函式,但折夠函式裡會有其他內容,折夠函式可能會清理那個例項裡邊的資源,也可能操作其他例項啊什麼啊

如果類裡邊還建立了例項,折夠函式就要把類裡建立的例項delete,不然會記憶體洩漏。

4樓:彭梓肇夢槐

比如你的物件obj中有個指標int

p.這個變數佔4個位元組,你在類成員函式裡有對它賦值p=new

int[100];當你的物件析構的時候,預設解構函式會釋放obj佔用的記憶體,包括p指標,但是動態分配的100個int不會被釋放。這種情況你需要實現自定義解構函式,在函式里加上deletep;

c++關於解構函式的幾個問題

5樓:木有想到

你這個問題很多,不是一句兩話說的清的。是最基本的建構函式,copy建構函式,賦值(構造)函式及解構函式的理解淺的問題。

#include

using namespace std;

template

class mycontainer

mycontainer(t* b) : mycontainer()mycontainer(const mycontainer& b) : mycontainer()

void print()

~mycontainer()

private:

t* a;

};int main()

;mycontainerdata;

// data.a已經被析構

data.print();

cin.get();

return 0;

}要完成你想要的功能,需要增加如下**

mycontainer& operator = (const mycontainer& b)

c++解構函式問題

6樓:匿名使用者

你new那個應該用中括號吧:

name = new char[strlen(n) + 1];

7樓:匿名使用者

c++不是有std::string, 好像用c的方法在寫c++...

建議改用string class, 也許就沒問題了.

c++解構函式引發的問題。

8樓:第627號病房

我按照你的編譯了一下,是會執行到system的

你用debug模式執行一下,在return 0 那裡設定一個斷點就能看到

在非除錯模式下,會有兩句「請繼續....」,但是因為程式的錯誤,編譯器提示的那句不會顯示,你是不是把system的那句當成編譯器的提示了...

就是除錯按鈕,有個小三角。你先在return 0 那裡設一個斷點,當程式執行到斷點的時候就會停下,你就能看到程式有沒有執行到你那句了。

執行有兩種,一種是帶除錯的,一種是不帶除錯的。

c++的解構函式的問題

9樓:吾嘗終日而思

bank::~bank()

追問:可是如果head後面鏈著好幾個元素,是不是應該一個一個delete掉呢?

回答 不需要,head是一維指標,一個delete就把head指向的地址開始,你分配的記憶體都釋放了。

不過要注意的是,你的建構函式或其他成員函式(非解構函式)中要對head分配記憶體空間。

10樓:

bank::~bank()

11樓:濱崎步最愛

你還是給出全部**吧

解構函式怎麼用,在c 中的,C 中的解構函式是怎麼呼叫的?

解構函式是一個類的例項銷燬的時候,被自動呼叫的函式,一般用來做一些清理性的工作。就是呼叫完類的實體物件後,需要呼叫解構函式 解構函式,就是善後處理,該物件的生命週期結束了,它負責善後的一些工作,如釋放已分配的記憶體等。你將該物件delete掉時,解構函式就自動執行了,不用你去呼叫它的。簡單的舉個例子...

c 中解構函式中可以呼叫虛擬函式麼

c 中 解構函式中不可以呼叫虛擬函式。effective c 中有這樣的描述 同樣的原因也適用於析構過程。一旦派生類解構函式執行,這個物件的派生類資料成員就被視為未定義的值,所以 c 就將它們視為不再存在。c 中派生類在構造時會先呼叫基類的建構函式再呼叫派生類的建構函式,析構時則相反,先呼叫派生類的...

c中stl的vector容器的解構函式怎麼用

解構函式不需 bai要直接呼叫。而du 是在物件失效時zhi自動呼叫的。所謂物件失dao效,是指程式已經執行版出區域性變數權的作用域或者是對物件指標進行delete時。比如void foo 當此函式執行結束時,自動呼叫array的解構函式 vector c 中stl的vector容器抄的解構函式不用...