久久久国产精品秘人口麻豆|永久免费AV无语国产|人成电影免费中文字幕|久久AV嫩草影院2

    1. <dfn id="yitbn"><samp id="yitbn"><progress id="yitbn"></progress></samp></dfn>

          <div id="yitbn"></div>

          1. 首頁 - 網(wǎng)校 - 萬題庫 - 直播 - 雄鷹 - 團購 - 書城 - ? - 學(xué)習通 - 導(dǎo)航 - 510 -
            首頁考試吧網(wǎng)校萬題庫直播雄鷹510團購書城?論壇實用文檔作文大全寶寶起名
            2015中考
            法律碩士
            2015高考
            MBA考試
            2015考研
            MPA考試
            在職研
            中科院
            考研培訓(xùn)
            專升本
            自學(xué)考試 成人高考
            四 六 級
            GRE考試
            攻碩英語
            零起點日語
            職稱英語
            口譯筆譯
            申碩英語
            零起點韓語
            商務(wù)英語
            日語等級
            GMAT考試
            公共英語
            職稱日語
            新概念英語
            專四專八
            博思考試
            零起點英語
            托福考試
            托業(yè)考試
            零起點法語
            雅思考試
            成人英語三級
            零起點德語
            等級考試
            華為認證
            水平考試
            Java認證
            職稱計算機 微軟認證 思科認證 Oracle認證 Linux認證
            公 務(wù) 員
            導(dǎo)游考試
            物 流 師
            出版資格
            單 證 員
            報 關(guān) 員
            外 銷 員
            價格鑒證
            網(wǎng)絡(luò)編輯
            駕 駛 員
            報檢員
            法律顧問
            管理咨詢
            企業(yè)培訓(xùn)
            社會工作者
            銀行從業(yè)
            教師資格
            營養(yǎng)師
            保險從業(yè)
            普 通 話
            證券從業(yè)
            跟 單 員
            秘書資格
            電子商務(wù)
            期貨考試
            國際商務(wù)
            心理咨詢
            營 銷 師
            司法考試
            國際貨運代理人
            人力資源管理師
            廣告師職業(yè)水平
            衛(wèi)生資格 執(zhí)業(yè)醫(yī)師 執(zhí)業(yè)藥師 執(zhí)業(yè)護士
            會計從業(yè)資格
            基金從業(yè)資格
            統(tǒng)計從業(yè)資格
            經(jīng)濟師
            精算師
            統(tǒng)計師
            會計職稱
            法律顧問
            ACCA考試
            初級會計職稱
            資產(chǎn)評估師
            高級經(jīng)濟師
            注冊會計師
            高級會計師
            美國注冊會計師
            審計師考試
            國際內(nèi)審師
            注冊稅務(wù)師
            理財規(guī)劃師
            一級建造師
            安全工程師
            設(shè)備監(jiān)理師
            公路監(jiān)理師
            公路造價師
            二級建造師
            招標師考試
            物業(yè)管理師
            電氣工程師
            建筑師考試
            造價工程師
            注冊測繪師
            質(zhì)量工程師
            巖土工程師
            注冊給排水
            造價員考試
            注冊計量師
            環(huán)保工程師
            化工工程師
            暖通工程師
            咨詢工程師
            結(jié)構(gòu)工程師
            城市規(guī)劃師
            材料員考試
            消防工程師
            監(jiān)理工程師
            房地產(chǎn)估價
            土地估價師
            安全評價師
            房地產(chǎn)經(jīng)紀人
            投資項目管理師
            環(huán)境影響評價師
            土地登記代理人
            寶寶起名
            繽紛校園
            實用文檔
            入黨申請
            英語學(xué)習
            思想?yún)R報
            作文大全
            工作總結(jié)
            求職招聘 論文下載 直播課堂
            您現(xiàn)在的位置: 考試吧 > 計算機等級考試 > 計算機二級考試 > C加加 > 復(fù)習資料 > 正文

            2015年國家計算機二級C++考試復(fù)習資料(5)

            考試吧整理了“2015年國家計算機二級C++考試復(fù)習資料”,提供給各位考生備考,更多考試資料請持續(xù)關(guān)注考試吧計算機等級考試頻道!

              點擊查看:2015年國家計算機二級C 考試復(fù)習資料匯總

              二級C++輔導(dǎo)筆記:析構(gòu)函數(shù)和this指針

              一、析構(gòu)函數(shù)

              前面的一些例子都沒有說明析構(gòu)函數(shù),這是因為所用到的類在結(jié)束時不需要做特別的清理工作。下面的程序給出了一新的Date類,其中包括一個字符串指針,用來表示月份。

              #include iostream.h

              #include string.h

              class Date

              {

              int mo,da,yr;

              char *month;

              public:

              Date(int m=0, int d=0, int y=0);

              ~Date();

              void display() const;

              };

              Date::Date(int m,int d,int y)

              {

              static char *mos[] =

              {

              January,February,March,April,May,June,

              July,August,September,October,November,December

              };

              mo=m; da=d; yr=y;

              if(m!=0)

              {

              month=new char[strlen(mos[m-1])+1];

              strcpy(month, mos[m-1]);

              }

              else month = 0;

              }

              Date::~Date()

              {

              delete [] month;

              }

              void Date::display() const

              {

              if(month!=0) cout< }

              int main()

              {

              Date birthday(8,11,1979);

              birthday.display();

              return 0;

              }

              在Date對象的構(gòu)造函數(shù)中,首先用new運算符為字符串month動態(tài)分配了內(nèi)存,然后從內(nèi)部數(shù)組中把月份的名字拷貝給字符串指針month。

              析構(gòu)函數(shù)在刪除month指針時,可能會出現(xiàn)一些問題。當然從這個程序本身來看,沒什么麻煩;但是從設(shè)計一個類的角度來看,當Date類用于賦值時,就會出現(xiàn)問題。假設(shè)上面的main()修改為“

              int main()

              {

              Date birthday(8,11,1979);

              Date today;

              today=birthday;

              birthday.display();

              return 0;

              }

              這會生成一個名為today的空的Date型變量,并且把birthday值賦給它。如果不特別通知編譯器,它會簡單的認為類的賦值就是成員對成員的拷貝。在上面的程序中,變量birthday有一個字符型指針month,并且在構(gòu)造函數(shù)里用new運算符初始化過了。當birthday離開其作用域時,析構(gòu)函數(shù)會調(diào)用delete運算符來釋放內(nèi)存。但同時,當today離開它的作用域時,析構(gòu)函數(shù)同樣會對它進行釋放操作,而today里的month指針是birthday里的month指針的一個拷貝。析構(gòu)函數(shù)對同一指針進行了兩次刪除操作,這會帶來不可預(yù)知的后果。

              如果假設(shè)today是一個外部變量,而birthday是一個自變量。當birthday離開其作用域時,就已經(jīng)把對象today里的month指針刪除了。顯然這也是不正確的。

              再假設(shè)有兩個初始化的Date變量,把其中一個的值賦值給另一個:

              Date birthday(8,11,1979);

              Date today(12,29,2003);

              today=birthday;

              問題就更復(fù)雜了,當這兩個變量離開作用域時,birthday中的month的值已經(jīng)通過賦值傳遞給了today。而today中構(gòu)造函數(shù)用new運算符給month的值卻因為賦值被覆蓋了。這樣,birthday中的month被刪除了兩次,而today中month卻沒有被刪除掉。

              二、重載賦值運算符

              為了解決上面的問題,我們應(yīng)該寫一個特殊的賦值運算符函數(shù)來處理這類問題。當需要為同一個類的兩個對象相互賦值時,就可以重載運算符函數(shù)。這個方法可以解決類的賦值和指針的釋放。

              下面的程序中,類中的賦值函數(shù)用new運算符從堆中分配了一個不同的指針,該指針獲取賦值對象中相應(yīng)的值,然后拷貝給接受賦值的對象。

              在類中重載賦值運算符的格式如下:

              void operator = (const Date&)

              后面我們回加以改進。目前,重載的運算符函數(shù)的返回類型為void。它是類總的成員函數(shù),在本程序紅,是Date類的成員函數(shù)。它的函數(shù)名始終是operator =,參數(shù)也始終是同一個類的對象的引用。參數(shù)表示的是源對象,即賦值數(shù)據(jù)的提供者。重載函數(shù)的運算符作為目標對象的成員函數(shù)來使用。

              #include iostream.h

              #include string.h

              class Date

              {

              int mo,da,yr;

              char *month;

              public:

              Date(int m=0, int d=0, int y=0);

              ~Date();

              void operator=(const Date&);

              void display() const;

              };

              Date::Date(int m, int d, int y)

              {

              static char *mos[] =

              {

              January,February,March,April,May,June,

              July,August,September,October,November,December

              };

              mo = m; da = d; yr = y;

              if (m != 0)

              {

              month = new char[strlen(mos[m-1])+1];

              strcpy(month, mos[m-1]);

              }

              else month = 0;

              }

              Date::~Date()

              {

              delete [] month;

              }

              void Date::display() const

              {

              if (month!=0) cout< char name[25];

              cin >> name;

              if (strncmp(name, end, 3) == 0) break;

              ListEntry* list = new ListEntry(name);

              if (prev != 0) prev->AddEntry(*list);

              prev = list;

              }

              while (prev != 0)

              {

              prev->display();

              ListEntry* hold = prev;

              prev = prev->PrevEntry();

              delete hold;

              }

              return 0;

              }

              程序運行時,會提示輸入一串姓名,當輸入完畢后,鍵入end,然后程序會逆序顯示剛才輸入的所有姓名。

              程序中ListEntry類含有一個字符串和一個指向前一個表項的指針。構(gòu)造函數(shù)從對中獲取內(nèi)存分配給字符串,并把字符串的內(nèi)容拷貝到內(nèi)存,然后置鏈接指針為NULL。析構(gòu)函數(shù)將釋放字符串所占用的內(nèi)存。

              成員函數(shù)PrevEntry()返回指向鏈表前一個表項的指針。另一個成員函數(shù)顯示當前的表項內(nèi)容。

              成員函數(shù)AddEntry(),它把this指針拷貝給參數(shù)的preventry指針,即把當前表項的地址賦值給下一個表項的鏈接指針,從而構(gòu)造了一個鏈表。它并沒有改變調(diào)用它的listEntry對象的內(nèi)容,只是把該對象的地址賦給函數(shù)的參數(shù)所引用的那個ListEntry對象的preventry指針,盡管該函數(shù)不會修改對象的數(shù)據(jù),但它并不是常量型。這是因為,它拷貝對象的地址this指針的內(nèi)容給一個非長常量對象,而編譯器回認為這個非常量對象就有可能通過拷貝得到的地址去修改當前對象的數(shù)據(jù),因此AddEntry()函數(shù)在聲明時不需要用const.

              相關(guān)推薦:

              各地2015年計算機等級考試報名時間匯總

              各地2015年上半年計算機等級考試費用匯總

              2015年計算機二級C++模擬練習題及答案匯總

            文章搜索
            計算機等級考試欄目導(dǎo)航
            版權(quán)聲明:如果計算機等級考試網(wǎng)所轉(zhuǎn)載內(nèi)容不慎侵犯了您的權(quán)益,請與我們聯(lián)系800@eeeigo.com,我們將會及時處理。如轉(zhuǎn)載本計算機等級考試網(wǎng)內(nèi)容,請注明出處。
            Copyright © 2004- 考試吧計算機等級考試網(wǎng) All Rights Reserved 
            中國科學(xué)院研究生院權(quán)威支持(北京) 電 話:010-62168566 傳 真:010-62192699