noncopyable
記住 the Big Three
什么情況下我們需要自定義復(fù)制構(gòu)造函數(shù)或賦值操作符?這個(gè)問題有一個(gè)通用的答案,一個(gè)幾乎總是正確的答案:無論何時(shí)你需要定義析構(gòu)函數(shù)、復(fù)制構(gòu)造函數(shù)、或賦值操作符三個(gè)中的任意一個(gè),你也需要定義另外兩個(gè)。
要使用 boost::noncopyable, 你要從它私有地派生出不可復(fù)制類。雖然公有繼承也可以,但這是一個(gè)壞習(xí)慣。公有繼承對于閱讀類聲明的人而言,意味著IS-A (表示派生類IS-A 基類)關(guān)系,但表明一個(gè)類IS-A noncopyable 看起來有點(diǎn)不太對。要從noncopyable派生,就要包含 "boost/utility.hpp" 。
#include "boost/utility.hpp"
class please_dont_make_copies : boost::noncopyable {};
以下情形下使用 noncopyable :
類型的復(fù)制和賦值都不被允許
復(fù)制和賦值的禁止應(yīng)該盡可能明顯
posted on 2011-07-16 16:26 Tim 閱讀(529) 評論(0) 編輯 收藏 引用 所屬分類: Boost學(xué)習(xí)
