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

Singleton這又是為什么???

Posted on 2008-11-26 21:10 MiweiDev 閱讀(614) 評論(4)  編輯 收藏 引用 所屬分類: C / C++Language

設計模式之Singleton 單態模式想必大家都玩過,但是今天我碰到個問題,沒想清楚,忘高手賜教!
下面就是Singleton頭文件“1.h”

#ifndef _SINGLETON_H__
#define _SINGLETON_H__

#include 
<assert.h>
#include 
<iostream>
using namespace std;

#if VW3D_COMPILER == COMPILER_MSVC
// Turn off warnings generated by this singleton implementation
#   pragma warning (disable : 4311)
#   pragma warning (disable : 
4312)
#endif


/** Template class for creating single-instance global classes.
*/

template 
<typename T> class Singleton
{
protected:

    
static T* ms_Singleton;

public:
    Singleton( 
void )
    
{
        cout 
<< "Sungleton Create~" << endl;
        assert( 
!ms_Singleton );
        ms_Singleton 
= static_cast< T* >this );
    }

    
~Singleton( void )
    
{
        cout 
<< "Sungleton DeCreate~" << endl;
        assert( ms_Singleton );  ms_Singleton 
= 0;  
    }

    
static T& getSingleton( void )
    
{  assert( ms_Singleton );  return ( *ms_Singleton );  }
    
static T* getSingletonPtr( void )
    
{  return ( ms_Singleton );  }
}
;
#endif

下面是一個類A來運用他“A.h”
#pragma once
#include 
"1.h"
#include 
<iostream>
using namespace std;

class CA : public Singleton<CA>
{
public:
    CA(
void);
    
~CA(void);

    
void print(int i)
    
{
        cout 
<< i << endl;
    }

}
;


類A的實現“a.cpp”
#include ".\a.h"

CA 
* Singleton<CA>::ms_Singleton = NULL;

CA::CA(
void)
{
    cout 
<< "Cr CA" << endl;
}


CA::
~CA(void)
{
    cout 
<< "~~CA" << endl;
}


OK最下面就是Main函數了~
#include <Windows.h>
#include 
<iostream>
#include 
<tchar.h>
#include 
<assert.h>
#include 
"A.h"
   
int main()
   
{
      
// CA ca;
       CA::getSingletonPtr()->print(100);

       getchar();
       
return 0;
   }

瞧我把CA ca;注釋掉了,但是還是....成功的調用了函數....只不過沒有打印進入構造函數...的信息。
WHY ? 沒進構造函數那么getSingletonPtr()應該是NULL吧。還能調用函數print??

Feedback

# re: Singleton這又是為什么???  回復  更多評論   

2008-12-15 12:56 by adrianx
加個成員變量就知道了

# re: Singleton這又是為什么???  回復  更多評論   

2008-12-15 14:33 by 小不點
按著你的建議,我定義了一個CA的成員變量m_nMember;在構造函數里面把它初始化為5,同時也定義了一個成員函數Print2(){cout << "i'm print2" <<endl;},這時候我把print()函數改變了,在他末尾添加上了打印m_nMember,這時候出現錯誤,說訪問0x00000000錯誤。我又改變了print函數,去掉了打印m_nMember,在他前面加上了Print2()函數,這時候又正確了,
為什么空指針還能調用成員函數,而訪問成員變量就不是那回事了呢?

# re: Singleton這又是為什么???  回復  更多評論   

2008-12-15 14:38 by 小不點
知道了,網上看到的。
http://topic.csdn.net/u/20070807/09/22087b45-a62e-4b73-b17a-962b8a5f4dd1.html
只要函數里面不通過this指針去操作成員變量就行,成員函數跟一般的函數沒什么差別,只不過調用方式需要一個類的對象或者指針來調用罷了,因為它默認綁定了一個this指針形參而已,這個指針為0也沒問題。

# re: Singleton這又是為什么???[未登錄]  回復  更多評論   

2008-12-15 19:12 by 王博煒
這樣也行?

只要函數里面不通過this指針去操作成員變量就行,成員函數跟一般的函數沒什么差別,只不過調用方式需要一個類的對象或者指針來調用罷了。
這個解釋不錯
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            欧美成人亚洲成人日韩成人| 麻豆国产va免费精品高清在线| 久久综合九色| 亚洲国产导航| 亚洲第一精品影视| 你懂的成人av| 中文日韩在线| 亚洲一级二级在线| 91久久国产综合久久蜜月精品 | 欧美日韩免费视频| 日韩五码在线| 亚洲小说欧美另类婷婷| 国产美女一区| 久久伊人精品天天| 欧美高清视频www夜色资源网| 99视频精品| 亚洲一区二区三区精品在线观看| 国产精品自拍一区| 欧美成人免费网站| 欧美日韩一区二区在线观看| 欧美一区二区精品| 老司机精品视频一区二区三区| 亚洲精品永久免费精品| 亚洲视频一二三| 今天的高清视频免费播放成人 | 久久精品亚洲| 欧美二区在线观看| 欧美一区深夜视频| 免费看亚洲片| 欧美一区二区久久久| 久久人人97超碰人人澡爱香蕉| 亚洲精品女av网站| 亚洲一级黄色| 日韩小视频在线观看| 亚洲欧美综合另类中字| 亚洲人成网站999久久久综合| 一本色道久久综合亚洲91| 国内精品久久久久影院色| 日韩亚洲欧美成人一区| 在线观看三级视频欧美| 中文国产成人精品久久一| 亚洲缚视频在线观看| 亚洲精品资源| 国产免费成人| 亚洲靠逼com| 欧美婷婷在线| 亚洲午夜在线观看视频在线| 欧美在线观看www| 一本久道久久久| 久久夜色精品国产欧美乱极品| 亚洲影院免费| 欧美精品亚洲| 欧美高清自拍一区| 激情久久久久久久久久久久久久久久| 99精品视频免费| 亚洲国产日韩在线一区模特| 亚洲欧美日韩一区二区| 中日韩视频在线观看| 欧美freesex8一10精品| 久久免费99精品久久久久久| 国产精品青草久久| 欧美巨乳在线观看| 亚洲欧美日韩国产成人精品影院| 1000部精品久久久久久久久 | 亚洲欧美成人| 日韩一区二区精品葵司在线| 久久视频在线看| 久久免费视频一区| 黄色亚洲免费| 久久精品噜噜噜成人av农村| 久久国产精品久久久久久久久久| 国产精品成人在线观看| 亚洲麻豆av| 亚洲一区二区三区四区五区黄| 欧美伦理91| 亚洲精品久久久久久下一站| 91久久夜色精品国产网站| 欧美成年视频| 91久久国产综合久久| 夜夜爽www精品| 欧美日韩国产页| 一区二区三区欧美| 亚洲欧美日韩另类精品一区二区三区| 欧美日韩在线观看视频| 亚洲视频在线视频| 久久精品道一区二区三区| 国产亚洲精品资源在线26u| 午夜精品区一区二区三| 久久亚洲精品视频| 亚洲激情不卡| 国产精品99一区| 欧美亚洲视频一区二区| 男人天堂欧美日韩| 日韩亚洲精品在线| 国产精品视频| 久久久国产精品一区二区中文| 欧美大片免费观看| 一本色道久久88综合日韩精品| 欧美手机在线视频| 欧美在线视频免费| 亚洲区欧美区| 久久福利一区| 亚洲国产美女| 国产精品亚洲成人| 猫咪成人在线观看| 一区二区三区黄色| 另类天堂av| 亚洲一级片在线看| 在线免费观看欧美| 国产精品美女久久久久久免费| 久久精品日韩一区二区三区| 亚洲欧洲在线免费| 久久亚洲精品伦理| 亚洲综合精品一区二区| 亚洲高清视频一区| 国产欧美精品xxxx另类| 欧美极品aⅴ影院| 久久精品卡一| 亚洲欧美日韩国产综合| 亚洲国产婷婷香蕉久久久久久| 欧美有码在线观看视频| 一本色道久久88综合亚洲精品ⅰ| 国产一区二区中文| 国产精品成人观看视频国产奇米| 久久中文精品| 欧美淫片网站| 亚洲综合色自拍一区| 最新国产成人在线观看| 麻豆成人av| 久久精品av麻豆的观看方式 | 国产精品xnxxcom| 欧美成va人片在线观看| 久久久国产一区二区| 亚洲午夜精品久久久久久app| 一区二区高清在线观看| 欧美大学生性色视频| 欧美在线观看视频| 亚洲免费在线观看视频| 99这里只有精品| 亚洲国产欧美久久| 欧美成人一品| 欧美ab在线视频| 久热精品视频在线观看一区| 欧美亚洲在线播放| 欧美一区二区精品久久911| 亚洲欧美日韩爽爽影院| 亚洲一区国产视频| 亚洲视频综合| 亚洲在线播放电影| 亚洲综合不卡| 欧美一区二区三区在线观看视频| 亚洲在线免费| 欧美亚洲日本网站| 欧美在线国产精品| 久久久99久久精品女同性| 久久av红桃一区二区小说| 久久国产一区| 久久亚洲欧美| 欧美成人免费一级人片100| 亚洲第一网站| 99成人在线| 亚洲欧美日韩一区二区三区在线观看| 中文精品视频| 久久久久久亚洲综合影院红桃| 久久久午夜电影| 欧美成人性网| 国产精品久久久久久户外露出| 国产精品久久久久aaaa| 国产一区二区成人久久免费影院| 国内精品美女在线观看| 亚洲区国产区| 亚洲午夜久久久| 久久久91精品国产| 欧美激情精品久久久久久蜜臀 | 亚洲人成网站精品片在线观看 | 中国成人在线视频| 亚洲在线观看视频网站| 欧美一区二区高清在线观看| 久久综合色一综合色88| 亚洲国产精品综合| 中文在线资源观看网站视频免费不卡| 亚洲免费一区二区| 久久一本综合频道| 欧美日韩亚洲一区在线观看| 国产麻豆91精品| 亚洲激情国产| 欧美一区二区私人影院日本| 欧美成人精品在线视频| 99国产麻豆精品| 狼人社综合社区| 国产精品久久97| 最新成人在线| 亚洲一级黄色| 亚洲欧美成aⅴ人在线观看| 亚洲片在线资源| 亚洲综合色视频| 蜜臀av一级做a爰片久久| 欧美精品色一区二区三区| 国产乱子伦一区二区三区国色天香 | 亚洲视频网在线直播|