青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

醬壇子

專注C++技術(shù) 在這里寫下自己的學(xué)習(xí)心得 感悟 和大家討論 共同進步(歡迎批評!!!)

  C++博客 :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
  66 Posts :: 16 Stories :: 236 Comments :: 0 Trackbacks

公告

王一偉 湖南商學(xué)院畢業(yè) 電子信息工程專業(yè)

常用鏈接

留言簿(19)

我參與的團隊

搜索

  •  

積分與排名

  • 積分 - 388990
  • 排名 - 64

最新隨筆

最新評論

閱讀排行榜

評論排行榜

<轉(zhuǎn)自csdn相關(guān)問題回復(fù)>

CObject::AssertValid ? 成員函數(shù)提供對對象內(nèi)部狀態(tài)的運行時檢查。盡管從 ? CObject ? 派生類時不需要重寫 ? AssertValid,但可以通過重寫使您的類更安全可靠。AssertValid ? 應(yīng)在對象的所有成員變量上執(zhí)行斷言,以驗證它們包含有效值。例如,它應(yīng)檢查指針成員變量不為 ? NULL。 ?
? ?
? 下面的示例顯示如何聲明 ? AssertValid ? 函數(shù): ?
? class ? CPerson ? : ? public ? CObject ?
? { ?
? protected: ?
? ? ? ? CString ? m_strName; ?
? ? ? ? float ? ? ? m_salary; ?
? public: ?
? #ifdef ? _DEBUG ?
? ? ? ? virtual ? void ? AssertValid() ? const; ? ? ? // ? Override ?
? #endif ?
? ? ? ? // ? ... ?
? }; ?
? 當(dāng)重寫 ? AssertValid ? 時,在執(zhí)行您自己的檢查之前請調(diào)用 ? AssertValid ? 的基類版本。然后使用 ? ASSERT ? 宏檢查您的派生類特有的成員,如下所示: ?
? ?
? #ifdef ? _DEBUG ?
? void ? CPerson::AssertValid() ? const ?
? { ?
? ? ? ? // ? call ? inherited ? AssertValid ? first ?
? ? ? ? CObject::AssertValid(); ?
? ?
? ? ? ? // ? check ? CPerson ? members... ?
? ? ? ? ASSERT( ? !m_strName.IsEmpty()); ? // ? Must ? have ? a ? name ?
? ? ? ? ASSERT( ? m_salary ? > ? 0 ? ); ? // ? Must ? have ? an ? income ?
? } ?
? #endif ?
? 如果任何成員變量存儲對象,則可以使用 ? ASSERT_VALID ? 宏測試它們的內(nèi)部有效性(如果它們的類重寫了 ? AssertValid)。 ?
? ?
? 例如,考慮 ? CMyData ? 類,該類在其成員變量之一中存儲了一個 ? CObList。CObList ? 變量 ? m_DataList ? 存儲了一個 ? CPerson ? 對象的集合。CMyData ? 的簡化聲明如下所示: ?
? ?
? class ? CMyData ? : ? public ? CObject ?
? { ?
? ? ? ? // ? Constructor ? and ? other ? members ? ... ?
? ? ? ? protected: ?
? ? ? ? ? ? ? CObList* ? m_pDataList; ?
? ? ? ? // ? Other ? declarations ? ... ?
? ? ? ? public: ?
? #ifdef ? _DEBUG ?
? ? ? ? ? ? ? virtual ? void ? AssertValid( ? ) ? const; ? // ? Override ?
? #endif ?
? ? ? ? // ? Etc. ? ... ?
? }; ?
? CMyData ? 中重寫的 ? AssertValid ? 如下所示: ?
? ?
? #ifdef ? _DEBUG ?
? void ? CMyData::AssertValid( ? ) ? const ?
? { ?
? ? ? ? // ? Call ? inherited ? AssertValid ?
? ? ? ? CObject::AssertValid( ? ); ?
? ? ? ? // ? Check ? validity ? of ? CMyData ? members ?
? ? ? ? ASSERT_VALID( ? m_pDataList ? ); ?
? ? ? ? // ? ... ?
? } ?
? #endif ?
? CMyData ? 使用 ? AssertValid ? 機制測試其數(shù)據(jù)成員中存儲的對象的有效性。CMyData ? 中重寫的 ? AssertValid ? 為它自己的 ? m_pDataList ? 成員變量調(diào)用 ? ASSERT_VALID ? 宏。 ?
? ?
? 因為 ? CObList ? 類也重寫 ? AssertValid,所以有效性測試不在該級別停止。該重寫對列表的內(nèi)部狀態(tài)執(zhí)行附加有效性測試。因此,對 ? CMyData ? 對象的有效性測試將導(dǎo)致對存儲的 ? CObList ? 列表對象內(nèi)部狀態(tài)的附加有效性測試。 ?
? ?
? 再多進行一些操作,還可以添加對存儲在列表中的 ? CPerson ? 對象的有效性測試。可以從 ? CObList ? 派生 ? CPersonList ? 類,并重寫 ? AssertValid。在重寫中可調(diào)用 ? CObject::AssertValid,然后循環(huán)訪問列表,在列表中存儲的每個 ? CPerson ? 對象上調(diào)用 ? AssertValid。本主題開始所示的 ? CPerson ? 類已重寫了 ? AssertValid。 ?
? ?
? 當(dāng)為調(diào)試生成時,這是一種功能極強的機制。當(dāng)接著為發(fā)布生成時,該機制自動關(guān)閉。 ?
? ?
? AssertValid ? 的限制 ?
? 給定類的 ? AssertValid ? 函數(shù)的用戶應(yīng)注意該函數(shù)的限制。觸發(fā)的斷言指示對象一定有誤,并且執(zhí)行將暫停。但是,缺少斷言只指示未找到任何問題,并不保證對象是好的。??

當(dāng)從 ? CObject ? 派生類時,在使用 ? DumpAllObjectsSince ? 將對象轉(zhuǎn)儲到“輸出”窗口時,可以重寫 ? Dump ? 成員函數(shù)以提供附加信息。 ?
? ?
? Dump ? 函數(shù)將對象的成員變量的文本化表示形式寫入轉(zhuǎn)儲上下文 ? (CDumpContext)。轉(zhuǎn)儲上下文類似于 ? I/O ? 流。可以使用插入運算符 ? (<<) ? 向 ? CDumpContext ? 發(fā)送數(shù)據(jù)。 ?
? ?
? 重寫 ? Dump ? 函數(shù)時,應(yīng)先調(diào)用 ? Dump ? 的基類版本以轉(zhuǎn)儲基類對象的內(nèi)容。然后為派生類的每個成員變量輸出文本化說明和值。 ?
? ?
? Dump ? 函數(shù)的聲明如下所示: ?
? ?
? class ? CPerson ? : ? public ? CObject ?
? { ?
? public: ?
? #ifdef ? _DEBUG ?
? ? ? ? virtual ? void ? Dump( ? CDumpContext& ? dc ? ) ? const; ?
? #endif ?
? ?
? ? ? ? CString ? m_firstName; ?
? ? ? ? CString ? m_lastName; ?
? ? ? ? // ? And ? so ? on... ?
? }; ?
? 由于對象轉(zhuǎn)儲只在調(diào)試程序時有意義,所以 ? Dump ? 函數(shù)的聲明用 ? #ifdef ? _DEBUG ? / ? #endif ? 塊括起來。 ?
? ?
? 在下面的示例中,Dump ? 函數(shù)先為其基類調(diào)用 ? Dump ? 函數(shù)。然后,它將每個成員變量的簡短說明與該成員的值一起寫入診斷流。 ?
? ?
? #ifdef ? _DEBUG ?
? void ? CPerson::Dump( ? CDumpContext& ? dc ? ) ? const ?
? { ?
? ? ? ? // ? Call ? the ? base ? class ? function ? first. ?
? ? ? ? CObject::Dump( ? dc ? ); ?
? ?
? ? ? ? // ? Now ? do ? the ? stuff ? for ? our ? specific ? class. ?
? ? ? ? dc ? << ? "last ? name: ? " ? << ? m_lastName ? << ? "\n" ?
? ? ? ? ? ? ? << ? "first ? name: ? " ? << ? m_firstName ? << ? "\n"; ?
? } ?
? #endif ?
? 必須提供 ? CDumpContext ? 參數(shù)以指定轉(zhuǎn)儲輸出的目的地。MFC ? 的“Debug”版本提供名為 ? afxDump ? 的預(yù)定義 ? CDumpContext ? 對象,它將輸出發(fā)送到調(diào)試器。 ?
? ?
? CPerson* ? pMyPerson ? = ? new ? CPerson; ?
? // ? Set ? some ? fields ? of ? the ? CPerson ? object. ?
? //... ?
? // ? Now ? dump ? the ? contents. ?
? #ifdef ? _DEBUG ?
? pMyPerson->Dump( ? afxDump ? ); ?
? #endif ?
? 在 ? MFC ? 程序中,可以使用 ? DumpAllObjectsSince ? 轉(zhuǎn)儲有關(guān)堆中尚未釋放的所有對象的說明。DumpAllObjectsSince ? 轉(zhuǎn)儲自上個 ? CMemoryState::Checkpoint ? 以來分配的所有對象。如果未發(fā)生 ? Checkpoint ? 調(diào)用,則 ? DumpAllObjectsSince ? 將轉(zhuǎn)儲當(dāng)前在內(nèi)存中的所有對象和非對象。 ?
? ?
? 注意 ? ? ? 必須先啟用診斷跟蹤,然后才能使用 ? MFC ? 對象轉(zhuǎn)儲。 ?
? 注意 ? ? ? 程序退出時 ? MFC ? 將自動轉(zhuǎn)儲所有泄漏的對象,因此不必創(chuàng)建代碼在該點轉(zhuǎn)儲對象。 ?
? 以下代碼通過比較兩個內(nèi)存狀態(tài)來測試內(nèi)存泄漏,并在檢測到泄漏時轉(zhuǎn)儲所有對象: ?
? ?
? if( ? diffMemState.Difference( ? oldMemState, ? newMemState ? ) ? ) ?
? { ?
? ? ? ? TRACE( ? "Memory ? leaked!\n" ? ); ?
? ? ? ? diffMemState.DumpAllObjectsSince(); ?
? } ?
? 轉(zhuǎn)儲的內(nèi)容如下所示: ?
? ?
? Dumping ? objects ? -> ?
? ?
? {5} ? strcore.cpp(80) ? : ? non-object ? block ? at ? $00A7521A, ? 9 ? bytes ? long ?
? {4} ? strcore.cpp(80) ? : ? non-object ? block ? at ? $00A751F8, ? 5 ? bytes ? long ?
? {3} ? strcore.cpp(80) ? : ? non-object ? block ? at ? $00A751D6, ? 6 ? bytes ? long ?
? {2} ? a ? CPerson ? at ? $51A4 ?
? ?
? Last ? Name: ? Smith ?
? First ? Name: ? Alan ?
? Phone ? #: ? 581-0215 ?
? ?
? {1} ? strcore.cpp(80) ? : ? non-object ? block ? at ? $00A7516E, ? 25 ? bytes ? long ?
? 大多數(shù)行開始處的大括號中的數(shù)字指定對象的分配順序。最近分配的對象具有最高編號,并顯示在轉(zhuǎn)儲的頂部。???
?
posted on 2007-03-07 16:41 @王一偉 閱讀(3371) 評論(1)  編輯 收藏 引用

Feedback

# re: debug調(diào)試中,AssertValid和Dump 這兩個函數(shù)怎么進行工作的? 2008-02-25 16:45 Tbag
支持  回復(fù)  更多評論
  


只有注冊用戶登錄后才能發(fā)表評論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲人精品午夜在线观看| 欧美日韩亚洲三区| 欧美黄色视屏| 日韩亚洲视频| 亚洲美女在线视频| 国产精品porn| 欧美在线欧美在线| 久久精品国产2020观看福利| 永久免费精品影视网站| 欧美成人a∨高清免费观看| 浪潮色综合久久天堂| 亚洲伦伦在线| 亚洲一区二区三区四区中文| 国产精品一区二区三区久久久| 欧美一区二区三区视频免费播放| 久久福利资源站| 亚洲精品精选| 午夜精品视频在线| 亚洲国产成人av| 亚洲天堂网在线观看| 好吊色欧美一区二区三区四区 | 在线精品国精品国产尤物884a| 欧美jjzz| 国产精品伦理| 欧美成人中文字幕| 国产精品乱码一区二三区小蝌蚪| 久久综合九色综合网站| 欧美欧美全黄| 久热综合在线亚洲精品| 欧美三级在线| 欧美成人国产一区二区| 国产精品大片免费观看| 欧美成人精品1314www| 国产精品久久久久久久久搜平片| 蜜臀va亚洲va欧美va天堂| 欧美日韩一区在线| 欧美成人蜜桃| 国产日韩一区欧美| 亚洲精选中文字幕| 亚洲大片av| 午夜亚洲福利| 亚洲性av在线| 欧美电影免费观看大全| 久久久噜噜噜久久| 国产精品每日更新| 欧美日韩国产色视频| 亚洲欧洲精品一区二区| 午夜在线一区二区| 亚洲香蕉网站| 欧美大片91| 欧美国产先锋| 亚洲高清色综合| 久久久999成人| 久久精品系列| 国产精品亚洲成人| 亚洲区欧美区| 亚洲美女在线观看| 美女精品一区| 美国成人直播| 国产精品九九| 亚洲图片在线观看| 亚洲一区三区在线观看| 久久久久久久久一区二区| 久久av资源网站| 国产精品网红福利| 亚洲免费视频在线观看| 欧美一级视频免费在线观看| 国产精品卡一卡二卡三| 中文欧美日韩| 亚洲欧美在线高清| 欧美性视频网站| 一区二区三区四区国产精品| 99国内精品久久| 欧美日韩国产精品一区| 亚洲精品国精品久久99热| 亚洲精品一区二区三区福利| 欧美精品1区2区3区| 亚洲毛片一区| 亚洲午夜激情网站| 欧美无砖砖区免费| 亚洲综合成人婷婷小说| 久久人人97超碰精品888| 激情成人综合| 欧美激情视频一区二区三区免费| 日韩亚洲一区在线播放| 亚洲图片欧美一区| 国产欧美日韩在线播放| 久久在精品线影院精品国产| 欧美88av| 亚洲午夜久久久久久久久电影网| 国产精品国产一区二区| 欧美一区二区成人6969| 欧美激情一区二区| 亚洲欧美变态国产另类| 国内精品视频666| 免费观看成人鲁鲁鲁鲁鲁视频| 日韩网站在线观看| 久久精品国产第一区二区三区| 亚洲福利av| 国产精品日韩精品| 裸体歌舞表演一区二区| 亚洲最新在线| 久久精品在线免费观看| 亚洲精品免费网站| 国产欧美精品日韩| 欧美精品二区三区四区免费看视频| 亚洲欧美国产高清| 亚洲国产精品成人va在线观看| 亚洲欧美日韩在线观看a三区| 国内外成人免费激情在线视频网站| 欧美激情精品久久久六区热门 | 久久精品在线免费观看| 美女日韩欧美| 亚洲嫩草精品久久| 亚洲人成绝费网站色www| 国产精品久久77777| 欧美成ee人免费视频| 欧美在线国产| 亚洲天堂偷拍| 99re热这里只有精品免费视频| 久久夜色精品国产欧美乱| 亚洲在线播放| 一本一本久久| 亚洲国产毛片完整版| 国内精品久久久久影院色| 国产精品高清在线| 免费的成人av| 久久久综合激的五月天| 欧美一级理论片| 午夜精品国产更新| 国产精品99久久不卡二区| 亚洲精品久久久久久久久久久久 | 亚洲精品午夜| 在线视频国产日韩| 国产一区二区三区四区在线观看| 欧美亚洲成人免费| 欧美精品系列| 欧美日本不卡| 欧美日韩一区在线观看| 欧美日韩国产精品专区| 欧美日本在线| 欧美日韩在线视频首页| 欧美日本在线播放| 欧美日韩中文字幕在线| 欧美日韩国产小视频| 欧美高潮视频| 欧美精品在线免费| 欧美人成网站| 国产精品进线69影院| 国产精品日本| 国内精品久久久| 在线观看视频一区二区| 亚洲激情女人| 一区二区三区你懂的| 亚洲午夜一区二区| 香蕉视频成人在线观看 | 日韩一区二区福利| 一区二区三区久久精品| 亚洲免费视频在线观看| 欧美中文字幕在线| 久久亚洲国产精品一区二区| 免费欧美在线视频| 亚洲黄一区二区三区| 99国产精品99久久久久久粉嫩| 亚洲色图在线视频| 欧美伊人影院| 欧美国产亚洲另类动漫| 欧美午夜精品久久久| 国产午夜精品一区二区三区视频| 在线播放国产一区中文字幕剧情欧美| 亚洲国产精品va在线观看黑人| 亚洲欧洲一区二区三区久久| 中日韩视频在线观看| 久久国产精品亚洲77777| 女生裸体视频一区二区三区| 亚洲精品一区二区三区蜜桃久| 亚洲综合色激情五月| 久久久一本精品99久久精品66| 欧美日韩不卡| 国内久久婷婷综合| 亚洲视频一区二区在线观看| 欧美在线视频观看| 亚洲大胆美女视频| 亚洲欧美电影在线观看| 久久久水蜜桃av免费网站| 欧美视频在线免费| 伊人久久久大香线蕉综合直播| 一区二区三区毛片| 欧美**字幕| 国内一区二区三区在线视频| 国产伦理一区| 亚洲国产mv| 亚洲欧美中文在线视频| 欧美激情一区二区三区不卡| 亚洲永久在线观看| 欧美精品一区在线发布| 在线高清一区| 久久精品水蜜桃av综合天堂| 一区二区三区国产在线| 欧美丰满高潮xxxx喷水动漫|