| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2883 人关注过本帖
标题:C++单身模式
只看楼主 加入收藏
xiecaijian
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2008-3-24
收藏
 问题点数:0 回复次数:25 
C++单身模式
我五月份要考软件设计师考试
最近比较注意C++的程序复习题
也注意到了C++的单身模式之说
请问有哪位高手对这方面比较了解的,能否点拨一下?
谢谢啦!
搜索更多相关主题的帖子: 单身模式 设计师 软件 复习题 
2008-04-09 09:12
zaroty
Rank: 1
等 级:新手上路
帖 子:93
专家分:0
注 册:2008-3-28
收藏
得分:0 
没有听说过哦。。

http://hi.baidu.com/zaroty  偶滴博客
2008-04-09 16:22
flylee
Rank: 5Rank: 5
等 级:职业侠客
帖 子:309
专家分:374
注 册:2004-8-10
收藏
得分:0 
Singleton?好像在Java编程思想里面看到过
2008-04-11 12:03
野比
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:24
帖 子:1627
专家分:516
注 册:2007-5-24
收藏
得分:0 
好像带“单”字的 Design Pattern 翻译只有一个“单件模式(Singleton)”...

就是单次运行的构造函数生成唯一静态实例。

女侠,约吗?
2008-04-12 03:41
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
收藏
得分:0 
恩..是楼上的答案..构造函数私有..同过类的静态成员函数生成类的实例...

[[it] 本帖最后由 sunkaidong 于 2008-4-12 09:39 编辑 [/it]]

学习需要安静。。海盗要重新来过。。
2008-04-12 09:24
xiecaijian
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2008-3-24
收藏
得分:0 
我所看到的"单身模式"的解释是指只有一个实例的类
与你们所说的只有生成唯一静态实例是一样的吧
可是那要怎么用呢?用的时候怎么知道这构造函数就是单身的呢?

从不奢求生活能给予我最好的,只是执着于寻求最适合我的.
2008-04-18 15:28
野比
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:24
帖 子:1627
专家分:516
注 册:2007-5-24
收藏
得分:0 
主要代码是这样的,以下都是在类的内部,假设类名是 A
程序代码:
private:
    A* instance = 0;
public:
    A* CreateInstance(){
        //构造
        if(!instance)
            //还没有生成实例,创建之,否则不加理会
            instance = new A;
        return instance;
    }
protected: 
    A();

把构造函数 protected 或者 private 都可以,这样你声明新的类实例时就没办法调用构造函数,只能通过 CreateInstance 来创建实例,于是在 CreateInstance 的控制下,你无论调用几次,都只能创建一个 A 的实例了....

C++的语法有些忘了,和C#混了

女侠,约吗?
2008-04-18 20:06
yeyuanzhi
Rank: 1
等 级:禁止访问
帖 子:88
专家分:0
注 册:2005-12-31
收藏
得分:0 
楼主找本设计模式的书吧,很简单的。
2008-04-19 09:10
野比
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:24
帖 子:1627
专家分:516
注 册:2007-5-24
收藏
得分:0 
Singleton 的精华就是隐藏构造函数

女侠,约吗?
2008-04-20 02:27
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
收藏
得分:0 
[bo]以下是引用 [un]野比[/un] 在 2008-4-18 20:06 的发言:[/bo]

主要代码是这样的,以下都是在类的内部,假设类名是 A
private:
    A* instance = 0;
public:
    A* CreateInstance(){
        //构造
        if(!instance)
            //还没有生成实例,创建之,否则不加理会
       ...



野比兄犯了个逻辑上的错误哦,你的createInstance()由谁去调用呢?不还是A的对象吗。
把instance指定为static,createInstance指定为static,函数中直接返回instace就可以了。

instance的初始化在类外进行一次就可以了。

Fight  to win  or  die...
2008-04-21 22:22
快速回复:C++单身模式
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020800 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved