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

Singleton這又是為什么???

Posted on 2008-11-26 21:10 MiweiDev 閱讀(619) 評論(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>
            亚洲人在线视频| 欧美成人一区二区三区| 久久噜噜亚洲综合| 亚洲国产精品成人| 久久精品国产欧美激情| 欧美日韩直播| 亚洲国产91| 久久偷窥视频| 小黄鸭精品aⅴ导航网站入口| 欧美涩涩视频| 亚洲精品午夜| 欧美国产日本在线| 久久亚洲不卡| 国产精品欧美久久久久无广告| 国产婷婷一区二区| 久久成人亚洲| 亚洲国产精品va| 亚洲精品一区二区三区不| 毛片基地黄久久久久久天堂| 亚洲综合视频网| 国产精品乱码久久久久久| 亚洲老司机av| 亚洲精品女av网站| 男人的天堂亚洲在线| 亚洲国产日韩一区| 欧美电影免费网站| 欧美成人精品影院| 亚洲免费成人av| 一区二区电影免费在线观看| 欧美日韩一区国产| 亚洲伊人色欲综合网| 亚洲视频自拍偷拍| 国产亚洲日本欧美韩国| 久久国产欧美日韩精品| 久久人人97超碰人人澡爱香蕉| 伊人久久久大香线蕉综合直播| 久久久久88色偷偷免费| 老司机免费视频一区二区三区 | 欧美sm重口味系列视频在线观看| 亚洲欧洲另类国产综合| 日韩视频一区二区| 亚洲精品日本| 玖玖视频精品| 亚洲婷婷综合色高清在线| 香蕉乱码成人久久天堂爱免费 | 中国av一区| 午夜久久tv| 亚洲国产欧美在线人成| 99热这里只有精品8| 国产日韩三区| 欧美国产视频在线| 国产精一区二区三区| 欧美成在线视频| 国产精品影院在线观看| 欧美激情在线免费观看| 国产女人18毛片水18精品| 欧美激情自拍| 韩国亚洲精品| 亚洲午夜精品网| 亚洲国产日韩欧美在线99| 亚洲一区二区视频| 亚洲美女视频网| 欧美一区二区三区在| 久久久久久久综合狠狠综合| 国产视频在线观看一区| 99热这里只有精品8| 1024欧美极品| 亚洲欧美在线一区| 亚洲一区免费在线观看| 久久亚洲精品视频| 久久久久久91香蕉国产| 国产精品户外野外| 亚洲第一毛片| 在线看日韩av| 久久久久高清| 另类人畜视频在线| 国产亚洲欧美激情| 亚洲欧美三级在线| 亚洲一区二区三区在线| 欧美日本免费一区二区三区| 亚洲人成网在线播放| 91久久午夜| 欧美高清视频免费观看| 亚洲福利视频二区| 在线免费观看视频一区| 久久精品夜色噜噜亚洲a∨| 久久国产综合精品| 国产一区深夜福利| 国产一区二三区| 欧美一乱一性一交一视频| 久久av一区二区三区亚洲| 欧美精品在线观看播放| 久久久精品国产免大香伊 | 欧美xxxx在线观看| 亚洲国产精品999| 99国产精品99久久久久久| 毛片av中文字幕一区二区| 亚洲福利在线视频| 亚洲午夜精品福利| 国产乱码精品一区二区三区不卡| 欧美一区二区三区视频| 免费中文字幕日韩欧美| 亚洲欧洲综合| 国产精品日韩久久久| 亚洲欧美国产精品桃花| 免费不卡在线视频| 日韩视频在线观看国产| 国产精品久久久久久av福利软件 | 亚洲免费视频一区二区| 国产精品爱久久久久久久| 欧美成人免费播放| 亚洲一区精品在线| 国产一区免费视频| 欧美精品www| 先锋亚洲精品| 亚洲精品精选| 久久久国产精品亚洲一区 | 久久久精品日韩欧美| 亚洲美女啪啪| 激情六月婷婷久久| 国产精品va在线| 免费成人网www| 欧美一区二区| 亚洲精品黄网在线观看| 久久漫画官网| 欧美在线三级| 亚洲精品乱码久久久久久蜜桃91 | 久久综合狠狠| 裸体一区二区| 欧美一进一出视频| 亚洲美女黄色| 韩国欧美一区| 国产欧美日韩一区二区三区在线| 欧美国产亚洲视频| 欧美一区二区在线免费播放| 夜色激情一区二区| 亚洲国产色一区| 免费一级欧美在线大片| 欧美亚洲免费高清在线观看| 一区二区免费看| 亚洲美女中出| 亚洲国产日本| 1000部精品久久久久久久久| 国产一区二区三区黄视频| 欧美日韩免费看| 久久综合色8888| 老妇喷水一区二区三区| 久久精品视频导航| 欧美亚洲一区三区| 亚洲一区激情| 91久久香蕉国产日韩欧美9色| 欧美承认网站| 亚洲成色777777女色窝| 欧美/亚洲一区| 欧美国产视频在线观看| 国产精品福利av| 欧美精品一区三区| 欧美日韩免费看| 国产精品久久久久久五月尺| 欧美日韩亚洲免费| 国产精品久久99| 国产精品一区2区| 激情成人中文字幕| 亚洲欧洲日产国产网站| 最新精品在线| 这里只有视频精品| 欧美一区2区三区4区公司二百 | 国产主播精品| 亚洲精品中文字| 亚洲精品一区二区三区在线观看| 一区二区三区精品在线| 亚洲一区二区三区777| 欧美亚洲专区| 欧美ab在线视频| 99在线精品视频| 欧美一区二区三区在线| 欧美国产日韩xxxxx| 国产美女精品一区二区三区| 亚洲高清在线播放| 亚洲欧美另类在线| 欧美gay视频激情| 亚洲精品一区在线| 久久久久久久成人| 欧美激情1区2区3区| 欧美成年视频| 亚洲先锋成人| 欧美成人亚洲成人日韩成人| 国产精品一区二区久久国产| 亚洲高清在线观看| 久久成人18免费网站| 99亚洲精品| 欧美成人黑人xx视频免费观看| 国产精品久久久久aaaa| 亚洲三级网站| 米奇777在线欧美播放| 亚洲一区二区三区四区在线观看 | 欧美.www| 伊人精品久久久久7777| 亚洲欧美国产77777| 日韩五码在线|