1. 程式人生 > >託管c++中的資源管理--- "~"和"!"符號的作用

託管c++中的資源管理--- "~"和"!"符號的作用

寫過c++程式的朋友應該都知道解構函式的定義方法,舉例如下:

class CSomeClass
{
public:
CSomeClass();
~CSomeClass();
private:
LPCTSTR m_szBuffer;
};

帶有~符號的,就是解構函式,一般來說,我們會在解構函式裡做資源的釋放和清理工作,在託管c++裡,也是如此,不過如果僅僅在解構函式裡做資源的釋放,那麼就必須要按照如下方式來呼叫:

            using (CSomeClass someClass = new CSomeClass())
            {

            }

否則一旦忘記這樣做了,就有可能造成記憶體洩漏,但是在.net下的開發,記憶體都是託管的,由垃圾回收器自動管理,那麼如何才能解決上面碰到的可能忘記呼叫Dispose介面函式的問題呢?

這個時候微軟提供了一個符號,對就是歎號!

	public ref class CSomeClass
	{
	public: 
		CSomeClass();
		virtual ~CSomeClass();
		!CSomeClass();

	private:
		LPCTSTR m_SomeStr;
	};

這個時候,只需要向如下所示的一樣直接new就可以了,

CSomeClass someClass = new CSomeClass();

用完就不管了,垃圾回收器會自動呼叫!CSomeClass()方法,然後你就可以得到一個機會去清理和釋放資源了。