1樓:網友
呵呵,如果你類裡面沒使用malloc new 這類申請資源的函式,並且沒有自己想進行的善後工作,析構函式可以不寫的,甚至不宣告也可以(編譯器自動幫你加乙個預設的)。
或者你可以直接空的。
~binary_op_command(void){}
2樓:匿名使用者
如果不用指標之類,你的析構函式就空著好了。
析構函式是用來做善後工作的。
鍊表類的析構函式怎麼寫
3樓:匿名使用者
原因在push_back函式實現裡:
elsetmp->next=new cmycontainer();
tmp->next->data=i;
tmp->next->next = null;//加這句} 為了下一次push_back查詢能找到,因為你寫的while(tmp->next!=null)就是查詢null。每次申請乙個cmycontainer就要把它的next初始化為null。
同樣的,析構時候,鍊表的最後乙個元素的next沒有初始化為null,這樣迴圈就會一直執行下去,一直到可能程式外記憶體某乙個null處,引起執行時錯誤。
4樓:浮獻雪央
說了那麼多,看的都暈了。
析構函式在物件被銷毀時自動呼叫,我不明白的是,你的析構函式是含有鍊表類的析構函式?還是鍊表節點的析構函式呢?
如果是第一種情況的話,整個列表都要被銷毀了,你只析構一部分有什麼意義如果是第二種情況的話,你應該自己控制在這個節點物件失效時,從鍊表中刪除。
這個c++析構函式要怎麼寫?
5樓:拒絕996的瀟灑程式設計師
這不是析構函式的問題,你這個類的建構函式是乙個死迴圈:
每一次宣告cpeople,建構函式就會再構造乙個cpeople p, 這個p會做同樣的事,。。沒有頭。
更改方法是,不要把 p=new cpeople();寫入建構函式中,相反在建構函式中把p初始化為null, 即 p = null。 而使用乙個單獨的public函式執行此句,比如:
public:
cpeople* getp()
析構函式刪除p沒有任何問題:
~cpeople()
在p這一層,因為p->p ==null,不會出現迭代析構問題。
6樓:匿名使用者
這類寫的有意思。。。嘿嘿。
看一樓,一樓解釋的很清楚了。 最好把防止複製物件,把operator = 和複製建構函式設為private。
ps的ps:
那帖子已經達到修改上限,在這裡修改了。
你說的對,那類是自我呼叫,每次new的時候已經初始化了next了。
剛才又看了下,是析構函式中的問題。
while迴圈中。
上乙個物件已經把它析構了,然而它自己本身while還是在迴圈析構後面的,每個物件都是這樣,所以會錯誤。
c++佇列模型出隊和顯式析構函式問題
7樓:匿名使用者
首先,為什麼還要定義形參?
因為你的item其實不是乙個指標,而是乙個具體的結構,如果隊列為空,你怎麼判斷返回的item是空的呢?如果你的結構裡的item是個指標的話,那直接就可以返回null。
然後,這個temp的結構體變數是幹嘛用的?
因為你是要刪除front,然後把front指向它的next,如果不使用temp,當你delete front後,你是沒辦法呼叫front的,所以使用temp指向front的next,然後再把front賦值為temp,也就是它的next。
c++在析構函式中 寫入這些**是什麼意思呢
8樓:匿名使用者
這是一段檔案傳輸的處理**。主要作用從檔案流中讀取資料,寫成檔案。
fstream 是檔案流類,file()是乙個二進位製流例項,含兩個引數:待儲存的檔名和操作方法列舉,out應該是定義操作方法是從流中輸出內容。
一般在流中檔案是以二進位制形式存在,因而在下邊需要把二進位製流還原為物理檔案。
即為把二進位製流寫為物理檔案的方法。裡邊有兩個引數,char *&card 構成了乙個獨立的分塊。
另乙個引數sizeof(card)定義了每個資料塊兒的大小。檔案流把二進位制按每片大小逐個讀取二進位制資料,寫成物理檔案分塊,並最後合併成完整的檔案。
是關閉二進位製流。
9樓:網友
ios::out: /檔案以輸出方式開啟(記憶體資料輸出到檔案)
儲存card內容,寫入到檔案中。
c++中析構函式是什麼意思?
10樓:
析構對應構造 ,如果銷毀對應建立,是銷毀,釋放資源的意思。
11樓:網友
在c++裡面:
析構函式名與類名相同,只是在函式名前面加乙個位取反符~,例如~stud( )以區別於建構函式。它不能帶任何引數,也沒有返回值(包括void型別)。只能有乙個析構函式,不能過載。
如果使用者沒有編寫析構函式,編譯系統會自動生成乙個預設的析構函式(即使自定義了析構函式,編譯器也總是會為我們合成乙個析構函式,並且如果自定義了析構函式,編譯器在執行時會先呼叫自定義的析構函式再呼叫合成的析構函式),它也不進行任何操作。所以許多簡單的類中沒有用顯式的析構函式。
析構函式的c++語言析構函式格式
12樓:昌慧月
c++當中的析構函式格式如下: class 《類名》;《類名》::類名》()如以下定義是合法的:
class t; t::~t();當程式中沒有析構函式時,系統會自動生成以下析構函式:
《類名》::類名》()即不執行任何操作。
下面通過乙個例子來說明一下析構函式的作用: #includeusing namespace std;class t //為了簡潔,函式體可以直接寫在定義的後面,此時函式為內聯函式};int main();最後輸出:
析構函式被呼叫。
表示從鍵盤讀入乙個字元,為了讓我們能夠看得清楚結果。當然,析構函式也可以顯示的呼叫,如 (*t).~t();也是合法的。
13樓:冠璽
假設你的類名是:date
那麼:class date}
c++關於析構函式的問題
14樓:法拉克的
糾正一點:形參作為引數,是沒有析構概念的。
如果引數是類,則子類的析構要優先於父類的析構。這就和蓋房子乙個道理,,層數越高,則繼承的級別越高,最後析構就是**房子,你見過誰家裡拆房子是1樓拆完再拆2樓的麼?
15樓:搗蒜大師
形參析構?實參吧?實參不是a的引用嗎,怎麼會那麼快囍構。
c 解構函式是怎麼釋放記憶體的
你在方法2中可能例項化類1時沒有初始化指標,或者指標為空,程式結束時,呼叫解構函式delete一個野指標或空指標的時候就可能會出錯了,而你把方法1的指標換成物件,在程式結束的時候,即使你沒有清理,編譯器都會幫你釋放空間的,因此不會出錯。 自動生成的只會原樣複製。如果你的類裡有一個指標,你給它分配了記...
c 中的析構函式與建構函式的區別
c 中的析構函式與建構函式的區別主要是功能上的區別 建構函式 是一種特殊的方法。主要用來在建立物件時初始化物件,即為物件成員變數賦初始值,總與new運算子一起使用在建立物件的語句中。特別的乙個類可以有多個建構函式 可根據其引數個數的不同或引數型別的不同來區分它們 即建構函式的過載。析構函式 dest...
設計簡單的C 程式,要求包括建構函式,解構函式和複製函
我們課堂上剛練習了,同學,給你吧。include using namespace std class point point point p 拷貝建構函式 friend point move point q 友元函式宣告 point 解構函式int getx int gety point point...