典型問題分析2 LinkList中資料元素刪除

2022-06-21 06:06:10 字數 994 閱讀 1594

linklist中的資料元素刪除

linklistlist;

test t0(

0), t1(1), t2(2

);try

catch

(...)

在main.cpp中新增下面的**:

程式直接掛了,原因是不允許在析構函式中丟擲異常。

在visual studio 2010中執行,列印結果是1 3。為什麼會出現3而不是2,這是由於linklist類中的remove函式導致的。

bool remove(int

i)

return

ret;

}

在之前的程式中,我們先去destroy,然後再m_length--。當在析構函式中丟擲異常時,將不會再執行m_length--。因此需要調換一下m_length--和destroy(todel)的順序。

在clear函式中,也存在同樣的問題。

void

clear()

//m_length = 0;

}

本篇文章主要是想說明,當在析構函式中丟擲異常時(這是不合法的,但不排除有人就這麼做),以前先的程式會導致單鏈表的狀態發生混亂。為了增加程式的健壯性,調整m_length和destroy的順序。

C語言中的典型問題(2)

1.運算子優先順序 在乙個表示式中可能包含多個有不同運算子連線起來的 具有不同資料型別的資料物件 由於表示式有多種運算,不同的運算順序可能得出不同結果甚至出現錯誤運算錯誤,因為當表示式中含多種運算時,必須按一定順序進行結合,才能保證運算的合理性和結果的正確性 唯一性。優先順序從上到下依次遞減,最上面...

TCP FIN WAIT 2狀態問題分析

tcp fin wait 2狀態問題分析 1 出現fin wait 2一般為客戶端,如果為服務端出現,則表明是服務端主動發起的斷開。c documents and settings administrator netstat an findstr 10.208.8.2 tcp 10.88.2.26 ...

Axis2常見問題分析

1 在呼叫第三方的web service過程中 雙方都是axis2 發現如下問題 當資料量大時,第三方返回的contenttype 在http頭內 是xml 當資料量小時,第三方返回的contenttype 在http頭內 是text 這導致預設情況下,axis2 1.4生成的客戶端在處理資料量小時...