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

CG@CPPBLOG

/*=========================================*/
隨筆 - 76, 文章 - 39, 評論 - 137, 引用 - 0
數據加載中……

空對象模式


 
Martin Flower在《重構》里提到空對象模式,對于從容器中查找失敗需要返回引用時,可以使用,同時我覺的對于空指針調用也有一定作用,試舉一例:
 
 1 #include <iostream>
 2  
 3 class Mail{
 4 public:
 5         virtual void print()
 6                   {std::cout<<"Hello!"<<std::endl;};
 7         void* operator new(size_t);
 8 };
 9  
10 class NullMail{
11         NullMail(){};
12         static NullMail inst;
13 public:
14         virtual void print(){
15                 using namespace std;
16                 cout<<"error! You can't access a NULL object!"<<endl;
17         }
18         static NullMail&  GetInst(){return inst;};
19 };
20 
21 NullMail NullMail::inst;
22  
23 void* Mail::operator new(size_t){
24         return &NullMail::GetInst();
25 }
26  
27 Mail*   GetMailPtr(){
28         return NULL;
29 }
30  
31 Mail&   GetMailRef(){
32         return (Mail&)NullMail::GetInst();
33 }
34  
35 //
36  
37         Mail*   ptr_Mail = GetMailPtr();
38         Mail&   ref_Mail = GetMailRef();
39         //ptr_Mail->print();
40         ref_Mail.print();

 
當我們返回一個空指針給調用者,如果他沒有判斷,那就會發生系統崩潰,而我們返回一個空對象的引用就可以避免這一點。
 
另外一個附加的有趣現象,你認為下面的調用會輸出什么信息?
 
1 
2         ptr_Mail = new Mail;
3         ptr_Mail ->print();
4         ref_Mail.print();   

 
正確的答案是:
1         Hello!
2         Hello!

 
因為Mail的缺省構造函數將自己的vptr填給了NullMail單例。
=====================
一個問題,是不是Mail的每個公共接口,NullMail都要去實現一下?           --th
 
//除非實在沒有必要,的確應當實現一下所有的公有虛方法。cuigang,2007-11-08
 
=====================
“對于從容器中查找失敗需要返回引用時”,下午剛剛碰到一個這樣的問題。     jb
 

posted on 2007-12-17 21:34 cuigang 閱讀(1290) 評論(2)  編輯 收藏 引用 所屬分類: C/C++設計模式

評論

# re: 空對象模式  回復  更多評論   

關於 "因為Mail的缺省構造函數將自己的vptr填給了NullMail單例。"
請問博主為什麼 ?
2008-04-07 01:53 | Su, Awen

# re: 空對象模式  回復  更多評論   

@Su, Awen

new 一個對象,首先 使用 new 操作符 在堆中申請空間,然后調用構造函數初始化對象,如果有虛函數,會構造 vptr 指向 虛表, vptr 在 this 所指處。

例子中 Mail 重載了 new 操作符,返回 NullMail 單例的地址,雖然沒有聲明構造函數,但編譯器會提供缺省構造函數,這會將 NullMail 的 指向虛表的 vptr 改為 Mail 的 vptr(new 出來的 Mail::this 實際指向 NullMail)。


2008-04-07 23:21 | cuigang
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲高清不卡| 久久av一区二区| 久久精品九九| 久久精品中文字幕一区| 久久久999精品视频| 久久免费精品日本久久中文字幕| 久久精品一本久久99精品| 久久久久久国产精品一区| 蜜臀av在线播放一区二区三区| 看片网站欧美日韩| 欧美激情一区二区三区高清视频| 亚洲国语精品自产拍在线观看| 亚洲电影在线观看| 亚洲图片在区色| 久久亚洲影音av资源网| 欧美激情二区三区| 国产日韩亚洲欧美| 亚洲美女电影在线| 久久久久久久网| 亚洲最新在线| 久久夜色精品一区| 国产精品久久久久久久久久尿 | 欧美波霸影院| 一区二区三区欧美激情| 久久久精品国产一区二区三区| 欧美日韩成人在线| 黄网动漫久久久| 亚洲男女自偷自拍图片另类| 欧美成人首页| 欧美一区二区三区久久精品| 欧美成人四级电影| 国内精品美女在线观看| 亚洲综合国产激情另类一区| 亚洲高清视频一区| 久久久久久久成人| 国产久一道中文一区| 一区二区三区www| 欧美电影免费| 久久精品最新地址| 国产日本精品| 欧美有码在线观看视频| 在线亚洲国产精品网站| 欧美高清在线视频| 亚洲第一黄网| 久久综合给合| 欧美在线观看一二区| 国产乱码精品一区二区三区五月婷| 一区二区三区久久| 亚洲日本久久| 欧美日本免费| 一区二区激情| 日韩亚洲一区二区| 亚洲国产精品专区久久| 久久综合免费视频影院| 亚洲综合电影| 国产精品性做久久久久久| 亚洲一区二区三区午夜| 亚洲成色999久久网站| 欧美影院视频| 欧美一区午夜精品| 国内外成人免费激情在线视频网站 | 国产精品久久久久久久第一福利 | 欧美一区二区三区在线视频| 亚洲免费久久| 欧美日韩色一区| 亚洲视频一区在线观看| 99国产精品久久久久久久| 欧美日韩精品福利| 亚洲一区欧美二区| 亚洲自拍偷拍福利| 国产亚洲欧美中文| 欧美v日韩v国产v| 欧美电影在线播放| 亚洲一区二区在线视频| 亚洲午夜一区二区三区| 国产一区二区三区免费不卡| 久久天天躁夜夜躁狠狠躁2022 | 久久这里只有精品视频首页| 91久久精品一区二区别| 日韩亚洲成人av在线| 国产精品综合av一区二区国产馆| 久久久久9999亚洲精品| 美女脱光内衣内裤视频久久影院| 999在线观看精品免费不卡网站| 一区二区日韩精品| 国产在线乱码一区二区三区| 亚洲大胆人体在线| 国产精品av免费在线观看| 久久久久久久久久久久久9999| 免费日韩一区二区| 午夜精品美女自拍福到在线| 久久精品动漫| 亚洲网站视频福利| 久久天天躁夜夜躁狠狠躁2022 | 激情av一区二区| 亚洲每日更新| 狠狠综合久久| 一本久久知道综合久久| 激情一区二区三区| 亚洲视频电影图片偷拍一区| 在线日韩成人| 亚洲欧美国产精品va在线观看| 亚洲国产成人av在线| 亚洲午夜视频在线| 欧美激情在线播放| 久久综合色综合88| 午夜日韩电影| 欧美日本亚洲| 欧美成人网在线| 国产欧美日韩亚洲精品| 日韩天堂在线视频| 亚洲茄子视频| 久久影视精品| 久久久五月婷婷| 国产乱理伦片在线观看夜一区| 亚洲高清在线视频| 精品成人在线观看| 欧美在线观看视频一区二区三区| 亚洲自拍高清| 欧美日韩在线一区二区| 亚洲黄色在线看| 91久久久国产精品| 女主播福利一区| 欧美成人自拍| 亚洲第一精品福利| 久久欧美肥婆一二区| 久久综合网色—综合色88| 国产亚洲欧美一区| 性久久久久久久| 久久精品72免费观看| 国产毛片一区二区| 午夜激情亚洲| 久久九九电影| 国外成人在线视频网站| 久久国产高清| 牛牛国产精品| 亚洲精品国产精品国产自| 男男成人高潮片免费网站| 亚洲高清在线视频| 日韩午夜一区| 欧美色中文字幕| 亚洲一级电影| 久久久综合激的五月天| 亚洲风情在线资源站| 欧美777四色影视在线| 亚洲第一福利在线观看| 亚洲乱码国产乱码精品精可以看| 欧美成人国产一区二区| 亚洲免费黄色| 久久精品99国产精品日本 | 一区二区三区导航| 国产精品电影观看| 午夜亚洲福利| 免费短视频成人日韩| 亚洲精品视频啊美女在线直播| 欧美噜噜久久久xxx| 亚洲一区二区在线| 久久三级视频| 亚洲精品日韩久久| 国产精品热久久久久夜色精品三区 | 亚洲欧美国产一区二区三区| 国产欧美一区二区精品性| 久久午夜精品| 一区二区欧美精品| 久久影院午夜片一区| 亚洲精品永久免费精品| 国产精品高清在线| 久久婷婷麻豆| 一本一道久久综合狠狠老精东影业 | aa级大片欧美| 久久免费一区| 亚洲一区二区三区视频播放| 黄色亚洲精品| 欧美午夜女人视频在线| 久久久99免费视频| 一区二区三区国产盗摄| 你懂的国产精品| 午夜精品一区二区三区四区 | 久久一区二区三区四区| 91久久夜色精品国产九色| 国产精品男gay被猛男狂揉视频| 久久久久国产精品www| 在线亚洲伦理| 亚洲黄色有码视频| 免费不卡在线视频| 欧美中文字幕| 在线综合亚洲欧美在线视频| 在线观看欧美成人| 国产日韩三区| 国产精品免费看片| 欧美午夜国产| 欧美日韩久久| 欧美成人性网| 久久亚洲欧美| 久久久精彩视频| 久久成人国产| 欧美一区二区三区免费视频| 亚洲视频一二| 亚洲图片欧洲图片av| 一区二区三区高清在线观看|