在閱讀 Effective C++時,對RAII開始不理解,現總結以下:
RAII是Resource acquisition is initialization的縮寫形式,即「資源獲取就是初始化」,是C++等編程語言經常使用的管理資源、避免內存泄露的方法。它保證在任何狀況下,使用對象時先構造對象,最後析構對象。
根據RAII 對資源的全部權可分爲常性類型和變性類型,表明者分別是boost::shared_ptr和std::auto_ptr;從所管資源的初始化位置上可分爲外部初始化類型和內部初始化類型。編程
常性類型是指獲取資源的地點是構造函數,釋放點是析構函數,而且在這兩點之間的一段時間裏,任何對該RAII類型實例的操縱都不該該從它手裏奪走資源的全部權。變性類型是指能夠中途被設置爲接管另外一個資源,或者乾脆被置爲不擁有任何資源。外部初始化類型是指資源在外部被建立,並被傳給RAII實例的構造函數,後者進而接管了其全部權。boost:shared_ptr和std::auto_ptr都是此類型。與之相對的是內部初始化類型。編程語言
對於RAII在 Effective C++的第三部分(對象管理資源)條款1三、1四、15對RAII以及shared_ptr和std::auto_ptr有具體的介紹,還會關係到其餘的條款內容,具體能夠參加原書內容,此處再也不贅述!函數
不足與提升之處:對Boost庫和STL庫的理解仍是有限,還須要進一步深刻研究;
ui