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

#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>
            91久久香蕉国产日韩欧美9色| 欧美在线黄色| 美腿丝袜亚洲色图| 久久高清国产| 久久电影一区| 久久一本综合频道| 欧美aⅴ99久久黑人专区| 老司机午夜免费精品视频| 久久综合色播五月| 欧美电影免费观看网站| 欧美极品欧美精品欧美视频| 欧美了一区在线观看| 欧美成人国产| 欧美日韩免费| 欧美日韩国产综合视频在线观看中文| 欧美日韩国产三级| 国产精品日本欧美一区二区三区| 国产精品老牛| 伊人夜夜躁av伊人久久| 亚洲精品久久视频| 午夜精品网站| 欧美刺激午夜性久久久久久久| 亚洲国产一区二区a毛片| 亚洲国产日韩在线| 亚洲欧美日韩高清| 麻豆精品视频在线观看| 欧美色图一区二区三区| 黄色成人免费观看| 中文在线一区| 免费观看日韩| 亚洲特色特黄| 欧美国产第二页| 国产一区导航| 亚洲香蕉在线观看| 欧美国产91| 欧美一区=区| 欧美日韩在线第一页| 亚洲国产欧美国产综合一区| 午夜精品在线视频| 91久久午夜| 久久只精品国产| 国产欧美日韩亚州综合| 夜夜爽99久久国产综合精品女不卡| 久久久国产精品一区二区中文| 亚洲最新视频在线播放| 欧美国产日韩视频| 伊人久久综合97精品| 久久成人精品| 亚洲一区二区动漫| 欧美午夜女人视频在线| 亚洲精品在线电影| 欧美成人亚洲成人日韩成人| 欧美亚洲色图校园春色| 国产精品爽黄69| 亚洲一区二区欧美日韩| 91久久精品一区二区三区| 久热精品在线| 精品91免费| 久久免费精品日本久久中文字幕| 亚洲影视综合| 国产精品毛片在线| 欧美一区二区成人6969| 亚洲视屏在线播放| 国产精品国产三级国产专播品爱网 | 亚洲女同同性videoxma| 91久久亚洲| 欧美人成在线视频| 中国av一区| 欧美专区日韩视频| 亚洲国产精品一区二区久| 久久夜色精品国产| 韩国一区二区三区美女美女秀| 欧美在线视频一区二区三区| 亚洲欧美日韩专区| 国产午夜精品在线观看| 久久免费99精品久久久久久| 久久亚洲国产精品一区二区| 永久免费毛片在线播放不卡| 欧美大尺度在线| 欧美成人在线免费观看| 一区二区日韩精品| 亚洲香蕉网站| 国产午夜久久久久| 欧美国产精品劲爆| 欧美日韩精品二区第二页| 亚洲免费一区二区| 久久国产欧美精品| 亚洲日本电影在线| 亚洲一区二区三区乱码aⅴ蜜桃女| 国产精品欧美一区二区三区奶水| 久久国产精品久久久久久电车 | 一区二区三区www| 国产精品一区久久| 欧美777四色影视在线| 欧美激情精品久久久久久黑人 | 一区二区不卡在线视频 午夜欧美不卡在 | 亚洲欧美日本精品| 欧美亚洲日本国产| 亚洲破处大片| 亚洲综合三区| 亚洲啪啪91| 午夜精品久久久久久久久久久| 亚洲成在线观看| 这里只有精品电影| 亚洲国内精品| 欧美亚洲尤物久久| 亚洲精一区二区三区| 亚洲男人的天堂在线| 亚洲精品欧美专区| 欧美在线短视频| 一区二区激情小说| 久久伊人亚洲| 欧美一区久久| 欧美日韩色一区| 欧美黑人在线观看| 国产一区二区欧美| 宅男噜噜噜66国产日韩在线观看| 1024国产精品| 久久成人18免费网站| 亚洲午夜在线观看视频在线| 欧美91福利在线观看| 久久久噜噜噜久久中文字幕色伊伊 | 欧美精品一区二区三区视频| 久久精品一本久久99精品| 欧美日韩精品一区二区三区四区| 久久久久久有精品国产| 国产精品日韩精品| 亚洲狼人综合| 日韩视频免费在线| 欧美成人国产| 欧美大色视频| 1024欧美极品| 久久久一区二区| 久热国产精品视频| 好看的亚洲午夜视频在线| 亚洲欧美日韩精品| 午夜精品免费在线| 国产精品一卡二| 亚洲自拍都市欧美小说| 亚洲男人的天堂在线| 欧美视频日韩视频| 亚洲精品婷婷| 亚洲一级片在线看| 欧美丝袜一区二区| 亚洲午夜91| 欧美一区二区三区在| 国产欧美一区二区三区久久| 亚洲欧美日韩国产一区| 欧美制服丝袜| 国产一区二区三区日韩| 久久国产精品一区二区| 久久综合网hezyo| 亚洲成色精品| 欧美片在线播放| 夜色激情一区二区| 久久国产精品一区二区三区| 国产在线高清精品| 久久久久久亚洲精品杨幂换脸| 久久免费少妇高潮久久精品99| 在线观看日韩精品| 欧美精品日韩www.p站| aa级大片欧美| 久久九九精品| 亚洲精品一二区| 国产精品久久| 久久女同精品一区二区| 欧美大片一区| 亚洲欧美综合精品久久成人| 国产亚洲一级| 欧美成在线观看| 亚洲一区二区三区中文字幕在线| 久久日韩精品| 在线一区二区三区做爰视频网站| 国产精品久久久久久久电影| 久久精品国产欧美激情| 亚洲人成啪啪网站| 久久aⅴ国产欧美74aaa| 亚洲日本一区二区| 国产欧美视频一区二区| 嫩草影视亚洲| 欧美夜福利tv在线| 99精品免费| 免费欧美电影| 欧美一区=区| 在线亚洲成人| 在线成人www免费观看视频| 国产精品久久久久久影视 | 麻豆成人综合网| 亚洲先锋成人| 国产精品资源在线观看| 亚洲欧美日韩国产一区二区| 久久综合999| 亚洲永久精品大片| 亚洲高清视频一区| 国产色综合久久| 国产精品白丝av嫩草影院| 免费成人av在线看| 久久久www成人免费精品| 中文亚洲视频在线| 亚洲精品偷拍|