程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> C++編程總結之虛函數的使用

C++編程總結之虛函數的使用

編輯:關於C++
對於一個單一的類來說,析構函數是不是虛函數,其沒有實質性的意義。但是當當前類作為基類的時候,基類的析構函數是不是虛函數則會對程序帶來不同程度的影響。 看下下面的代碼運行結果:
#include
using namespace std;
class Base
{
public:
	Base()
	{
		cout << "Base:Constructor" <

運行結果為:
\
運行結果大家估計看的出來,當析構函數為非虛函數時,delete tmp的時候,只去調用了基類的析構函數,並沒有調用派生類的析構函數。 下面基類的析構函數使用需虛析構試試看結果如何:
#include
using namespace std;
class Base
{
public:
	Base()
	{
		cout << "Base:Constructor" <
運行結果為:
這個時候,函數調用delete tmp的時候,先調用了派生類的析構函數,然後調用了基類的析構函數。
通常情況下,一個類的析構函數中,總是去處理一些需要釋放內存資源的工作,而當析構函數沒有被正確調用的時候,那麼可能會造成本該釋放的內存在程序結束的時候不被釋放,從而造成內存的洩露。當數據量大的時候可能會造成很大的損失。並且對於一個C++程序員,時刻保證程序不出現內存洩露,使我們必須時刻注意的問題。 綜上所述,當我們需要把當前類作為基類使用的時候,我們必須注意析構函數虛化的處理。當然當不做基類的時候,我們可以不去設置虛析構。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved