虛析構主要為了實現類多型之間層層虛構,減少記憶體洩漏。
如果不用虛析構,**如下:
#include
using namespace std;
class b
~b()
};class a :public b
~a()
};int main()
執行結果如下:
a的析構函式的沒有走到,從而導致了a的自己的變數記憶體洩漏。
加上虛析構
#include
using namespace std;
class b
virtual ~b()
};class a :public b
~a()
};int main()
執行結果如下:
這樣就會執行a的析構函式。
(2)找出陣列中唯一重複的元素。
intarr[101],存滿了1-100,其中有乙個數字是重複的的。請找出來。
(1)我們可以定義乙個map。找到重複的直接返回,但是map占用空間。
(2)我們可以求出陣列的和,減去1-100的和,就是重複的數字。
(3)我們可以用可以用陣列的下標和元素之間的關係。取乙個位置的陣列值,index=intarr[length-1]-1(其他位置元素容易出問題),我們把intarr[index]的值(-1)。然後index=intarr[index](-1)-1;直到找到intarr[index]為負值,返回index+1即可。**如下:
#include
using namespace std;
int getunique(int intarr, int length)
intarr[index] *= -1;
index = intarr[index] * (-1) - 1;
}return index + 1;
}int main()
;cout << getunique(intarr, 10) << endl;
system(「pause」);
return 0;
}第三種方法也有很多種的推廣,需要多多使用啊。
C 中的虛析構
首先什麼是虛析構,虛析構就是析構函式為虛函式。那麼為什麼要用虛析構呢,是為了delete基類指標指向派生類時防止子類得資料不會被釋放造成記憶體洩露。我們看一下下面的例子 首先我們定義乙個資料類,mydata class mydata mydata private char m data nullpt...
虛析構函式和析構函式中的虛機制
虛析構函式 虛析構函式是為了解決基類指標指向派生類物件,並用基類指標刪除派生類物件時能夠完全釋放記憶體。class a1 class a2 class b1 public a1 class b2 public a2 int main 一般來說,如果類中不包含虛函式,就表示這個類不作為基類使用。如果宣...
c 的虛析構函式和純虛析構函式
虛函式是用作實現子類的多型性的,它可以在執行的過程中選擇子類或者父類的同名函式,意思就是說,每次只有乙個函式執行。但是對於析構函式來說,子類 與父類在銷毀物件時,都應該要呼叫 所以把父類的析構函式定義為虛函式,會發生什麼事情呢。class class b public a int main 可以發現...