青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

#ant

The dreams in which I'm dying are the best I've ever had...

考慮用Macro替換Uncopyable

看過Effective C++的人都知道,為了防止一個class被copying,而且將錯誤提前到編譯期,基本有兩種方法:
1. 將這個類的copy構造函數和copy assignment操作符都聲明為private而且沒有定義。示例代碼如下:
1?class?SomeClass?{
2?
????...
3?private
:
4?????//只有聲明

5?????SomeClass(const?SomeClass&);
6?????SomeClass&?operator=(const?SomeClass&
);
7?};

2. 專門設計一個為了阻止copying動作而設計的base class,這個base class相當簡單:
1?Uncopyable?{
2?protected:?//允許derived對象構造和析構

3?????Uncopyable()?{}
4?????~
Uncopyable()?{}
5?private:?//阻止copying

6?????Uncopyable(const?Uncopyable&);
7?????Uncopyable&?operator=(const?Uncopyable&
);
8?};

為了阻止某個對象如SomeClass被copying,我們唯一需要做的就是繼承自Uncopyable:
1?SomeClass?:?private?Uncopyable?{
2?
????...
3?};

第2種方案貌似很完美,在大多數情況下也工作的很好,甚至boost庫也廣泛采用了(boost庫中的叫noncopyable)。當然了,因為Uncopyable不含任何數據,符合EBO(empty base class optimization,空白基類最優化)資格,但由于它總是扮演base class,因此有可能導致多重繼承,而EBO一般只在單繼承下才可行,編譯器通常不會對有多個base class的derived classes施行EBO。

如果你不想導致多重繼承,不管是從性能上還是書寫代碼上,比如SomeClass繼承自某個base class,你可能會寫如下代碼:
1?class?SomeClass?:?public?BaseClass,?private?Uncopyable?{
2?
????...
3?};

這讓人很不爽,要是你跟我一樣懶,你肯定也不會愿意采用第一種方案,因為那意味著你會在每一個不想被copying的class里都加上那三行代碼。

如果用Macro就很簡單了,即靈活又方便:
1?#define?CLASS_UNCOPYABLE(classname)?\
2?????private
:?\
3?????classname(const?classname&
);?\
4?????classname&?operator=(const?classname&);

現在SomeClass只需寫成這樣:
1?class?SomeClass?{
2?
????CLASS_UNCOPYABLE(SomeClass)
3?
????...
4?};

不僅省事而且靈活!!!

posted on 2007-08-27 08:11 螞蟻終結者 閱讀(2054) 評論(2)  編輯 收藏 引用 所屬分類: C++

Feedback

# re: 考慮用Macro替換Uncopyable 2007-08-30 15:00 haskell

宏有時候確實很帶勁。
不過我用noncopy類,主要是為了讓被人好看,
至于多繼承noncopy類,概率太低  回復  更多評論   

# re: 考慮用Macro替換Uncopyable 2008-10-28 11:48 李現民

不錯,很好的主意  回復  更多評論   

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久久精品网| 伊大人香蕉综合8在线视| 亚洲欧美在线免费| 亚洲香蕉在线观看| 在线视频欧美日韩| 亚洲伊人色欲综合网| 99国产精品| 欧美国产日韩一区二区在线观看 | 午夜久久黄色| 性久久久久久久久| 久久久久国产一区二区三区四区| 久久xxxx| 亚洲国产精品成人va在线观看| 欧美不卡在线视频| 亚洲风情亚aⅴ在线发布| 一区二区黄色| 久久精品国产在热久久| 免费在线视频一区| 国产精品久久久久秋霞鲁丝| 国产一区视频网站| 亚洲精品在线电影| 久久国产乱子精品免费女| 欧美激情一区二区| 欧美一区亚洲二区| 欧美日韩综合一区| 亚洲福利视频在线| 性色一区二区三区| 亚洲精品久久久久久久久久久久| 性欧美暴力猛交69hd| 欧美另类亚洲| 亚洲二区三区四区| 欧美在线免费看| 日韩亚洲欧美一区二区三区| 久久国产精品99精品国产| 欧美激情亚洲激情| 一区二区亚洲精品国产| 先锋资源久久| 夜夜嗨av一区二区三区中文字幕 | 欧美午夜宅男影院在线观看| 在线观看91精品国产入口| 亚洲一区在线直播| 欧美激情精品久久久久久大尺度| 亚洲一区免费观看| 欧美日韩一区二区三区在线看| 亚洲第一级黄色片| 久久精品国产第一区二区三区| 亚洲精品视频一区| 欧美国产高清| 亚洲欧洲一区二区三区| 久久亚洲综合色一区二区三区| 在线亚洲精品福利网址导航| 欧美片在线播放| 亚洲人被黑人高潮完整版| 久久久av毛片精品| 亚洲欧美激情视频| 国产精品任我爽爆在线播放 | 免费成人性网站| 久久精品日韩欧美| 国外成人网址| 亚洲欧美日韩国产另类专区| 欧美怡红院视频| 国产一区二区三区精品久久久| 亚洲中字黄色| 亚洲免费视频在线观看| 欧美日韩一区在线观看| 一本色道婷婷久久欧美| 日韩午夜电影| 国产精品美腿一区在线看| 亚洲综合色在线| 亚洲午夜电影在线观看| 欧美小视频在线| 久久av一区二区| 久久久久久夜| 日韩视频在线永久播放| 日韩亚洲欧美一区二区三区| 欧美午夜一区二区三区免费大片 | 亚洲欧美国产视频| 亚洲一区二区免费| 国产日韩一区| 蜜臀av一级做a爰片久久| 免费亚洲一区| 一区二区三区精品视频| 亚洲在线观看| 亚洲国产视频直播| 一本大道久久精品懂色aⅴ| 国产精品理论片在线观看| 久久成人免费电影| 老牛影视一区二区三区| 99视频超级精品| 午夜久久tv| 亚洲国产网站| 亚洲一区www| 亚洲国产精品综合| 亚洲一级在线观看| 黑人一区二区三区四区五区| 亚洲国产免费看| 国产伦精品一区二区三区高清版| 久久人人爽国产| 欧美日韩精品一二三区| 久久久欧美一区二区| 欧美日韩国产高清| 久久蜜臀精品av| 国产精品久久久久秋霞鲁丝| 美女露胸一区二区三区| 欧美午夜精品久久久久免费视 | 久久亚洲精品视频| 国产精品99久久久久久久vr| 久久精品国产亚洲aⅴ| 一区二区欧美国产| 久久中文精品| 欧美一区午夜精品| 欧美三区免费完整视频在线观看| 你懂的国产精品永久在线| 国产精品乱码妇女bbbb| 欧美国产一区二区在线观看| 欧美精品v日韩精品v韩国精品v | 亚洲精品国产欧美| 国产一区av在线| 一区二区不卡在线视频 午夜欧美不卡在 | 亚洲一区二区三区高清| 欧美成人视屏| 欧美 日韩 国产 一区| 国产精品一区二区三区观看| 亚洲毛片视频| 99视频一区| 欧美人成网站| 亚洲精品中文字幕有码专区| 亚洲精品中文字幕女同| 欧美 日韩 国产在线| 欧美99久久| 91久久精品网| 欧美国产精品日韩| 亚洲精品久久久久久久久久久久久| 在线观看日韩欧美| 久久全球大尺度高清视频| 久久久久九九九| 红杏aⅴ成人免费视频| 久久视频一区二区| 欧美高清视频一区| 日韩午夜免费| 欧美亚日韩国产aⅴ精品中极品| 99视频日韩| 欧美一区二区三区久久精品茉莉花| 国产精品久久国产精麻豆99网站| 亚洲视频日本| 久久久久久婷| 在线免费观看欧美| 欧美激情在线有限公司| 一本色道88久久加勒比精品| 午夜久久tv| 一区二区三区中文在线观看| 久久综合狠狠| 亚洲高清在线视频| 亚洲在线一区二区三区| 国产精品久久久久999| 性欧美暴力猛交另类hd| 免费久久99精品国产自| 91久久精品国产91性色| 欧美日韩在线播放三区| 亚洲一区制服诱惑| 老司机午夜精品视频在线观看| 亚洲国产小视频| 国产精品自在在线| 免费日韩精品中文字幕视频在线| 亚洲精品国产精品国自产观看浪潮 | 亚洲美女91| 国产精品久久久久久久久免费樱桃| 欧美日韩国产免费观看| 亚洲第一级黄色片| 午夜精品久久久久久久| 国产一区二区三区高清播放| 久久理论片午夜琪琪电影网| 亚洲国产精品日韩| 欧美一级理论性理论a| 国产在线精品一区二区中文| 欧美成人tv| 欧美一区二区高清| 亚洲欧洲精品一区| 久久久激情视频| 中文一区二区| 在线观看欧美| 国产精品午夜视频| 美女视频黄a大片欧美| 亚洲一区观看| 亚洲人www| 欧美成人精品一区二区| 亚洲女与黑人做爰| 亚洲精品国产欧美| 国产真实乱偷精品视频免| 欧美日韩在线电影| 老牛嫩草一区二区三区日本| 亚洲免费综合| 一区二区黄色| 亚洲精品1区2区| 噜噜噜91成人网| 久久九九国产精品怡红院| 亚洲欧美电影院| 亚洲视频在线观看网站| 99热免费精品在线观看| 在线欧美影院|