C++/CLI: automatic loading of IDisposable::Dispose

來源:互聯網
上載者:User
在C#中,Dispose()方法必須由程式員自己顯示的調用,如果你忘記了這麼做,那麼在GC回收這個對象之前,它的非託管資源都得不到釋放。相比較之下,C++中的解構函式就顯得比較優雅:在對象退出範圍後,會自動調用解構函式。

在C#雖然也有解構函式,但是那實際上是一個Finalize()方法。大家都知道Finalize()方法有很多問題。

在C++/CLI(VS2005中的managed C++),解構函式將被編譯器映射到IDisposable::Dispose()方法。並且像在native C++中一樣,對象退出範圍後,將自動調用解構函式,也就是Dispose()方法。這無疑是一個很貼心的設計。

ref class A
{
    ...
    ~A()
};

void foo()
{
       A a; //已修改為新的文法 2004.10.16
  ...
}//在此處,a.Dispose將被調用

以上代碼的功能就像C#中的using的用法:

private void foo()
{
       using (A a = new A())
       {
               ....
       }//在此處,a.Dispose將被調用
}

    

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.