社区
C++ 语言
帖子详情
怎样设计一个只能建立一个对象的类?
jockcivil
2003-10-20 05:36:22
怎样设计一个类,他同时只能生成一个对象?
请高手指点!
...全文
60
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;
}
设计
一个
类
:
只能
在堆上创建
对象
?
只能
在栈上创建
对象
?
只能
创建
一个
对象
?
在C++中,
类
的
对象
建立
分为两种,一种是静态
建立
,如A a;另一种是动态
建立
,如A* ptr=new A;这两种方式是有区别的。 静态
建立
一个
类
对象
,是由编译器为
对象
在栈空间中分配内存,是通过直接移动栈顶指针,挪出适当的空间,然后在这片内存空间上调用构造函数形成
一个
栈
对象
。使用这种方法,直接调用
类
的构造函数; 动态
建立
类
对象
,是使用new运算符将
对象
建立
在堆空间中。这个过程分为两步,第一步是执...
设计
一个
类
,
只能
在堆上创建?
只能
在栈上创建?
只能
创建
一个
对象
?
设计
一个
类
只能
在堆上创建?
只能
在栈上创建?
只能
创建
一个
对象
?(单例模式**) C++中创建
对象
的方法有两种,静态创建和动态创建。 1.静态创建 静态创建是由编译器为
对象
在栈空间中分配一块内存,通过直接移动栈顶指针,取出需要多大的空间,然后再这块内存上钓调用构造函数形成
一个
栈
对象
。直接调用
类
的构造函数。 2.动态创建 通过new运算符将
对象
建立
在堆空间中。首先,调用op...
C++实现
一个
只能
在堆/栈上创建
对象
的
类
C++实现
一个
只能
在堆/栈上创建
对象
的
类
1.C++中
类
对象
的创建2.
设计
一个
类
,该
类
只能
在堆上创建
对象
3.
设计
一个
类
,该
类
只能
在堆上创建
对象
1.C++中
类
对象
的创建 在C++中,
类
的
对象
创建可以静态创建在栈区, 如A a;还可以动态创建在堆区,如A* ptr=new A;这两种方式是不同的。 静态
建立
一个
类
的
对象
,是由编译器为
对象
在栈空间中分配内存,是通过直接移动栈顶指针,挪出适当的空间,然后在这片内存空间上调用构造函数形成
一个
栈
对象
。使用这种方法,直接调用
类
的构造函数。 动态
建立
类
对象
,是使用new运算
如何创建
一个
类
只能
在堆(栈)上
建立
对象
在C++中,
类
对象
的
建立
方式有两种,一种是静态
建立
类
对象
,如A a;另一种是动态
建立
类
对象
,如A* p = new A; 这两种方式是有区别的: 静态
建立
类
对象
:是指全局
对象
,静态
对象
,以及分配在栈区域内的
对象
,编译器对它们的内存分配是在编译阶段就完成的,是通过直接移动栈顶指针,挪出适当的空间,然后在这片内存空间上调用构造函数形成
一个
栈
对象
。使用这种方法,直接调用
类
的构造函数。
c++ 怎么
建立
一个
只能
在堆/栈上实例化的
类
?
c++ 怎么
建立
一个
只能
在堆/栈上实例化的
类
?
C++ 语言
64,648
社区成员
250,476
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章