如何让一个类只有一个实例,谢谢,一定给分

时间:2022-05-15 11:47:24
能给段源代码嘛?

另外,能不能提供一个c++写的多线程的例子,想学习学习

11 个解决方案

#1


参考:
http://blog.vckbase.com/panic/archive/2005/04/06/4425.html

#2


好象是上次高程的程序填空题

#3


试题六(15分,每空3分)
  阅读下列函数说明和C++代码,将应填入(__n__)处的字句写在答题纸的对应栏内。
 【说明】
  通常情况下,用户可以对应用系统进行配置,并将配置信息保存在配置文件中,应用系统在启动时首先将配置文件加载到内存中,这些内存配置信息应该有且仅有一份。
  下面的代码应用了单身模式(Singleton)以保证Configure类只能有一个实例。这样,Configure类的使用者无法定义该类的多个实例,否则会产生编译错误。
 【C++代码】
  #include <iostream.h>
  class Configure {
   __(1)__;
   Configure() {};            //构造函数
   Public;
   Static Configure*Instance();
   Public;
   Int GetConfigureData() {return data;} //获取配置信息
   Int SetConfigureDate(int m_data)
   { data=m_data;       return data; }   //设置配置信息
   private:
   static Configure*_instance;
   int data;                          //配置信息
  };
  __(2)__=NULL;
  Configure * Configure;;Instance() {
   If (_instance= =NULL) {
    _instance=__(3)__;
   //加载配置文件并设置内存配置信息,此处省略
   }
   return__(4)__;
  }
  void main() {
   Configure*t=NULL;
   t=__(5)__;
   int d=t->GetConfigureData();
   //获取配置信息后进行其它工作,此处省略
  }

#4


class A {
private:
static int count ;
public:
A() { if( count > 0 ) throw new std::bad_alloc  ; ++count ; }
~A() { --count ; } 
} ;

//cpp文件中
int A::count = 0 ;

#5


试题六(共15分)
  (1) private
  (2) Configure *Configure::_inStance
  (3) new Configure 
  (4) _inStance
  (5) Configure::Instance()

#6


SINGLETON模式

基本思想,构造函数私有,通过对外接口获得对象指针。

#7


把多个定义当作编译错误进行提示是不可能的。
class S {
public:
static S* Ins() ;
protected:
S() ;
private:
static S *_ins ;
} ;


S *S::_ins = 0 ;
S *S::Ins()
{
 if( _ins == 0 )
  _ins = new S ;
 return _ins ;
}

#8


class clsT
{
    public:
    init();
    static getObject();   //用这个函数获得这个唯一的对象
    private:
    clsT();                //构造函数私有
}

clsT& clsT::getObject()   //用 static 创建一个唯一的对象, 并返回它, 这个就是获得对象的外部接口
{
     static clsT p;
     return p;
}

#9


比较经典的Singleton模式阿,看看GoF的书吧

#10


mark

#11


ding

#1


参考:
http://blog.vckbase.com/panic/archive/2005/04/06/4425.html

#2


好象是上次高程的程序填空题

#3


试题六(15分,每空3分)
  阅读下列函数说明和C++代码,将应填入(__n__)处的字句写在答题纸的对应栏内。
 【说明】
  通常情况下,用户可以对应用系统进行配置,并将配置信息保存在配置文件中,应用系统在启动时首先将配置文件加载到内存中,这些内存配置信息应该有且仅有一份。
  下面的代码应用了单身模式(Singleton)以保证Configure类只能有一个实例。这样,Configure类的使用者无法定义该类的多个实例,否则会产生编译错误。
 【C++代码】
  #include <iostream.h>
  class Configure {
   __(1)__;
   Configure() {};            //构造函数
   Public;
   Static Configure*Instance();
   Public;
   Int GetConfigureData() {return data;} //获取配置信息
   Int SetConfigureDate(int m_data)
   { data=m_data;       return data; }   //设置配置信息
   private:
   static Configure*_instance;
   int data;                          //配置信息
  };
  __(2)__=NULL;
  Configure * Configure;;Instance() {
   If (_instance= =NULL) {
    _instance=__(3)__;
   //加载配置文件并设置内存配置信息,此处省略
   }
   return__(4)__;
  }
  void main() {
   Configure*t=NULL;
   t=__(5)__;
   int d=t->GetConfigureData();
   //获取配置信息后进行其它工作,此处省略
  }

#4


class A {
private:
static int count ;
public:
A() { if( count > 0 ) throw new std::bad_alloc  ; ++count ; }
~A() { --count ; } 
} ;

//cpp文件中
int A::count = 0 ;

#5


试题六(共15分)
  (1) private
  (2) Configure *Configure::_inStance
  (3) new Configure 
  (4) _inStance
  (5) Configure::Instance()

#6


SINGLETON模式

基本思想,构造函数私有,通过对外接口获得对象指针。

#7


把多个定义当作编译错误进行提示是不可能的。
class S {
public:
static S* Ins() ;
protected:
S() ;
private:
static S *_ins ;
} ;


S *S::_ins = 0 ;
S *S::Ins()
{
 if( _ins == 0 )
  _ins = new S ;
 return _ins ;
}

#8


class clsT
{
    public:
    init();
    static getObject();   //用这个函数获得这个唯一的对象
    private:
    clsT();                //构造函数私有
}

clsT& clsT::getObject()   //用 static 创建一个唯一的对象, 并返回它, 这个就是获得对象的外部接口
{
     static clsT p;
     return p;
}

#9


比较经典的Singleton模式阿,看看GoF的书吧

#10


mark

#11


ding