怎样设计一个只能建立一个对象的类?

jockcivil 2003-10-20 05:36:22
怎样设计一个类,他同时只能生成一个对象?
请高手指点!
...全文
58 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
mshqian 2003-12-24
  • 打赏
  • 举报
回复
建议去看《Thinking in C++》,chap.9.3,有实例!
mechgoukiteng 2003-10-20
  • 打赏
  • 举报
回复
关于c++的单件完美实现,可以参考<modern c++ design>的第6章


我现在如果有多线程就直接用loki
alandd 2003-10-20
  • 打赏
  • 举报
回复
(用钱砸死我吧)的实现还是可能生成多个实例(在多个线程同时调用instance时),此类应该改成如下:

Singleton* Singleton::Instance () {
if (_instance == 0) {
if 加锁成功 //自己选择锁机制
{
if (_instance == 0)
{
_instance = new Singleton;
}
}
}
return _instance;
}
Jupin 2003-10-20
  • 打赏
  • 举报
回复
i agree with Hot_Forever(用钱砸死我吧).
MaiCle 2003-10-20
  • 打赏
  • 举报
回复
构造函数什么事也不干,根本就不会被调用。
jockcivil 2003-10-20
  • 打赏
  • 举报
回复
那Singleton 类的构造函数如何处理了?
chongyang 2003-10-20
  • 打赏
  • 举报
回复
这是设计模式中的Singleton 模式,同意 Hot_Forever(用钱砸死我吧),你可以查找一下,网上很多的!
danpianji2002 2003-10-20
  • 打赏
  • 举报
回复
说错了,对象的引用
danpianji2002 2003-10-20
  • 打赏
  • 举报
回复
定义这样的一个类
以后生成的对象都是这个类的引用
hongfeeling 2003-10-20
  • 打赏
  • 举报
回复
Singleton* Singleton::_instance = 0;

应该放在构造函数里吧
Hot_Forever 2003-10-20
  • 打赏
  • 举报
回复
Singleton模式,可以这样
class Singleton {
public:
static Singleton* Instance();
protected:
Singleton();
private:
static Singleton* _instance;
};


Singleton* Singleton::_instance = 0;

Singleton* Singleton::Instance () {
if (_instance == 0) {
_instance = new Singleton;
}
return _instance;
}

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧