• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    C/C++/C#面試題精選

    發布: 2011-3-09 10:39 | 作者: 何海濤 | 來源: 本站原創 | 查看: 129次 | 進入軟件測試論壇討論

    領測軟件測試網

      題目(15):運行下圖中代碼,輸出的結果是什么?這段代碼有什么問題?

      #include

      class A

      {

      public:

      A()

      { std::cout << "A is created." << std::endl; }

      ~A()

      { std::cout << "A is deleted." << std::endl; }

      };

      class B : public A

      {

      public:

      B()

      { std::cout << "B is created." << std::endl; }

      ~B()

      { std::cout << "B is deleted." << std::endl; }

      };

      int _tmain(int argc, _TCHAR* argv[])

      {

      A* pA = new B();

      delete pA;

      return 0;

      }

      答案:輸出三行,分別是:A is created. B is created. A is deleted。用new創建B時,回調用B的構造函數。在調用B的構造函數的時候,會先調用A的構造函數。因此先輸出A is created. B is created.

      接下來運行delete語句時,會調用析構函數。由于pA被聲明成類型A的指針,同時基類A的析構函數沒有標上virtual,因此只有A的析構函數被調用到,而不會調用B的析構函數。

      由于pA實際上是指向一個B的實例的指針,但在析構的時候只調用了基類A的析構函數,卻沒有調用B的析構函數。這就是一個問題。如果在類型B中創建了一些資源,比如文件句柄、內存等,在這種情況下都得不到釋放,從而導致資源泄漏。

      博主何海濤對本博客文章享有版權。網絡轉載請注明出處http://blog.csdn.net/cadcisdhht

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/

    33/3<123

    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>