扒开腿挺进岳湿润的花苞视频|将军边走边挺进她H树林|挺进朋友人妻张婉莹身体|岳脱得精光让我挺进去视频|第一次挺进莹莹的身体里视频|脱岳裙子从后面挺进去视频

新疆軟件開發(fā)

本站首頁 軟件開發(fā) 成功案例 公司新聞 公司簡介 客服中心 軟件技術(shù) 網(wǎng)站建設(shè)
  您現(xiàn)在的位置: 新疆二域軟件開發(fā)公司 >> 開發(fā)語言 >> 文章正文

C++類析構(gòu)函數(shù)學(xué)習(xí)

1.前言
        大部分對象在使用之之后沒有正確的從內(nèi)存清理完畢,造成內(nèi)存泄露也是C++出錯的主要領(lǐng)域
引入類的析構(gòu)是正確的從內(nèi)存中清量類的對象
一般什么時候觸發(fā)并調(diào)用類的析構(gòu)函數(shù)呢?
答案是:當(dāng)類實例對象超出它的有效作用域時,也就是撤消類對象時,自動調(diào)用析構(gòu)函數(shù)來清理對象
構(gòu)造函數(shù)用來初始化成員,析造函數(shù)則是用來清理對象
如我們刪除一個類的指針對象,則自動調(diào)用析構(gòu)函數(shù):
sales_item是一個類
sales_item *p = new sales_item //建立并分配一個類的指針p
delete p;//這就是撤消類的對象,隨后它自動調(diào)用析構(gòu)函數(shù)
2.定義
構(gòu)造函數(shù)名和類名完全一樣,并在名字前面加"~"符號
每個類只有一個析構(gòu)函數(shù)
2.1定義格式
~析構(gòu)函數(shù)名稱(){}    //一般析構(gòu)函數(shù):
virtual ~析構(gòu)函數(shù)名稱(){} //虛析構(gòu)函數(shù):
代碼如下
class item{
public:
~item(){}
};
3 基類與派生類
3.1一般基類是不用寫出析構(gòu)函數(shù),編譯器自動添加一個
類aa可以正常的工作就是編譯器自動添加了四個函數(shù)
如代碼
class aa{
public:
   //構(gòu)造,析構(gòu),復(fù)制構(gòu)造,賦值操作符四個函數(shù)由編譯器自動添加
   int getx(){return x;}
   void set(int a){x=a;}
private:
 int x;
};

3.2析構(gòu)函數(shù)"三法則",如果類中有復(fù)制構(gòu)造函數(shù)和賦值操作符重載,則析構(gòu)函數(shù)必須要,三者缺一不可
class bb{
public:
 bb(const bb& rhs){...}    //復(fù)制構(gòu)造函數(shù)
 bb& operator=(const bb& rhs){...} //賦值操作符
 ~bb(){清理函數(shù)}                   //析構(gòu)函數(shù)       
private:
 int x
};
以上三個函數(shù)三者必須同時出現(xiàn),以免出現(xiàn)有的對象清除不了,有的出現(xiàn)"淺復(fù)制錯誤"

3.3如果類中有指針成員,則必須專門寫一個析構(gòu)函數(shù)來清理指針成員,編譯器默認(rèn)添加的析構(gòu)函數(shù)不會去清理指針對象
如果類中有指針成員,如鏈表結(jié)構(gòu)實現(xiàn)等,
指針成員是基本單位,在方便使用指針的同時,如何管理好它們的工作就是C++中最困難的部分

這個析構(gòu)函數(shù)最好特別定制,做法是析構(gòu)函數(shù)加一個清理函數(shù),析構(gòu)函數(shù)直接調(diào)用它就OK

3.4派生類
虛成員函數(shù)和虛析構(gòu)函數(shù)通常是成對出現(xiàn)
當(dāng)基類有虛函數(shù)時,派生類會發(fā)生動態(tài)調(diào)用,也就是動態(tài)綁定,
當(dāng)不知道是調(diào)用基類對象還是調(diào)用派生類對象時,還要正確的清理它們就更加困難啦,在基類引入虛析構(gòu)函數(shù)后,
它也能發(fā)生動態(tài)綁定,正確的清理對象,這些都要到程序運(yùn)行后才能知道調(diào)用對象,在編譯前是無法知道對象是誰的
代碼:
//基類
class base{
public:
 virtual draw(){}; //虛方法
 virtual ~base(){};//虛析構(gòu)函數(shù)
};

//派生類
class dev : public base{
public:
   draw(){}//draw方法的實現(xiàn)
   ~dev(){}//析構(gòu)函數(shù)
};

4.設(shè)計指導(dǎo)
4.1一般的類我們不需要設(shè)計出它的析構(gòu)函數(shù),編譯器自動為我們構(gòu)建一個析構(gòu)函數(shù)
4.2析構(gòu)函數(shù)"三法則",如果類中有復(fù)制構(gòu)造函數(shù)和賦值操作符重載,則析構(gòu)函數(shù)必須要,三者缺一不可
4.3如果類中有指針成員,則必須專門寫一個析構(gòu)函數(shù)來清理指針成員,編譯器默認(rèn)添加的析構(gòu)函數(shù)不會去清理指針對象
4.4"虛函數(shù)和虛析構(gòu)函數(shù)成對實現(xiàn)",
當(dāng)類中有虛成員時,定制虛析構(gòu)函數(shù),讓派生類實行動態(tài)綁定方式來清除基類對象或者派生類對象

作者:未知 | 文章來源:未知 | 更新時間:2008-1-15 16:43:08

  • 上一篇文章:

  • 下一篇文章:

  • 相關(guān)文章:
    C++基礎(chǔ)知識:結(jié)構(gòu)體數(shù)據(jù)的指針變量
    如何實現(xiàn)C與C++程序的相互調(diào)用
    在C++中成員函數(shù)如何實現(xiàn)操作符重載?
    基礎(chǔ)學(xué)習(xí):C++非成員函數(shù)實現(xiàn)操作符重載
    基礎(chǔ)學(xué)習(xí):C++重載輸入輸出符
    基礎(chǔ)學(xué)習(xí):C++重載下標(biāo)結(jié)算符
    基礎(chǔ)學(xué)習(xí):C++中重載調(diào)用操作符
    基礎(chǔ)學(xué)習(xí):C++重載轉(zhuǎn)換操作符operator (type)
    C++類復(fù)制控制學(xué)習(xí)
    C++類構(gòu)造函數(shù)學(xué)習(xí)
    軟件技術(shù)
    · 開發(fā)語言
    · Java技術(shù)
    · .Net技術(shù)
    · 數(shù)據(jù)庫開發(fā)
    最新文章  
    ·搜集整理的asp.net的驗證方
    ·各種FOR循環(huán)結(jié)構(gòu)的整理
    ·軟件項目開發(fā)中應(yīng)該考慮那
    ·搜集整理的javascript sel
    ·軟件開發(fā)中項目經(jīng)理有那些
    ·學(xué)習(xí)如何在Lambda表達(dá)式進(jìn)
    ·C++基礎(chǔ)知識:結(jié)構(gòu)體數(shù)據(jù)的
    ·C#實現(xiàn)短信發(fā)送程序的例子
    ·sun最近修補(bǔ)了一部分java的
    ·rss定制的另外一種實現(xiàn)方式
    ·delphi實現(xiàn)利用arp欺騙來實
    ·基礎(chǔ)學(xué)習(xí):基于WF的流程框
    ·網(wǎng)絡(luò)編程中怎樣得知一次數(shù)
    ·如何逆序輸出單鏈表?
    ·軟件開發(fā)過程中的性能設(shè)計
    關(guān)于我們 | 軟件開發(fā) | 下載試用 | 客服中心 | 聯(lián)系我們 | 友情鏈接 | 網(wǎng)站地圖 | 新疆電子地圖 | RSS訂閱
    版權(quán)所有 © 2016 新疆二域軟件開發(fā)網(wǎng) m.jdtbank.com All Rights Reserved 新ICP備14003571號
    新疆軟件開發(fā)總機(jī):0991-4842803、4811639.
    客服QQ:596589785 ;地址:新疆烏魯木齊北京中路華聯(lián)大廈A-5C 郵編:830000
     
    枣阳市| 西和县| 鄯善县| 车险| 平陆县| 石台县| 正蓝旗| 景德镇市| 焉耆| 嘉荫县| 饶平县| 曲麻莱县| 怀远县| 建瓯市| 梁平县| 洱源县| 虞城县| 赤壁市| 哈尔滨市| 三都| 札达县| 林甸县| 都安| 德钦县| 高阳县| 弥勒县| 高邮市| 胶南市| 固原市| 高陵县| 紫阳县| 来安县| 阜平县| 乡城县| 南皮县| 子长县| 乐平市| 多伦县| 渭源县| 巫溪县| 三门县|