单间模式,求解释。

Roy_Smiling 2012-02-27 10:53:12

// ThinkingInCpp.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <iostream>

using namespace std;

class Singleton
{
private:
static Singleton s;
int i;
Singleton(int x):i(x){}
void operator=(Singleton &s){s.i = this->i;};
Singleton(Singleton &s){this->i = s.i;}
public:
static Singleton & getHandle()
{
return s;
}
int getValue()
{
return i;
}
void setValue(int x)
{
i = x;
}
};
Singleton Singleton::s(50); //发生了什么,有没有s对象
int _tmain(int argc, _TCHAR* argv[])
{
Singleton & s = Singleton::getHandle (); //发生了什么。
cout<<s.getValue()<<endl;

system("pause");
return 0;
}



构造函数什么时候调用的。
...全文
131 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
sishuizh 2012-02-28
  • 打赏
  • 举报
回复
其实吧,这玩意儿你不好理解,你就打上断点,一步一步的走,反复几次就清楚鸟
再说了,楼上几位回答得已经很全面了
pengzhixi 2012-02-27
  • 打赏
  • 举报
回复
Singleton Singleton::s(50); 这个是静态成员的定义

Singleton & s = Singleton::getHandle (); //引用该类的静态成员
Roy_Smiling 2012-02-27
  • 打赏
  • 举报
回复
总么么有高手指点一下啊
Isnis-fallen 2012-02-27
  • 打赏
  • 举报
回复
Singleton Singleton::s(50);
qscool1987 2012-02-27
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 roy_smiling 的回复:]
引用 6 楼 qscool1987 的回复:

Singleton Singleton::s(50); //发生了什么,有没有s对象
这里就调用了,静态成员初始化的时候就调用了构造函数
后面的只是引用不会调用

但是这个时候变量还不能用,为什么?
另外构造函数不是私有函数么,怎么调用的呢?
[/Quote]
Singleton Singleton::s(50); //发生了什么,有没有s对象
你怎么就不开窍呢,这个是属于在类定义中,只有遇到;号,类定义才算完成
类定义中你说可不可以调用私有的构造函数呢?
franzhong 2012-02-27
  • 打赏
  • 举报
回复
Singleton Singleton::s(50);
这应该就是定义了吧,s就是一个对静态对象;
Singleton & s = Singleton::getHandle ();
getHandle()返回上面初始化过了的对象引用,正好
mosal 2012-02-27
  • 打赏
  • 举报
回复
私有是为了不让对象调用,静态成员是可以调用的[Quote=引用 7 楼 roy_smiling 的回复:]

引用 6 楼 qscool1987 的回复:

Singleton Singleton::s(50); //发生了什么,有没有s对象
这里就调用了,静态成员初始化的时候就调用了构造函数
后面的只是引用不会调用

但是这个时候变量还不能用,为什么?
另外构造函数不是私有函数么,怎么调用的呢?
[/Quote]
Roy_Smiling 2012-02-27
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 cxsjabcabc 的回复:]

不太清楚LZ到底要问的是什么

变量s是静态的,在程序运行一开始就构造了。。后面就读读写写呗
[/Quote]
不知道我问什么的就对这个问题理解不行。
Roy_Smiling 2012-02-27
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 qscool1987 的回复:]

Singleton Singleton::s(50); //发生了什么,有没有s对象
这里就调用了,静态成员初始化的时候就调用了构造函数
后面的只是引用不会调用
[/Quote]
但是这个时候变量还不能用,为什么?
另外构造函数不是私有函数么,怎么调用的呢?
qscool1987 2012-02-27
  • 打赏
  • 举报
回复
Singleton Singleton::s(50); //发生了什么,有没有s对象
这里就调用了,静态成员初始化的时候就调用了构造函数
后面的只是引用不会调用
程序员小迷 2012-02-27
  • 打赏
  • 举报
回复
不太清楚LZ到底要问的是什么

变量s是静态的,在程序运行一开始就构造了。。后面就读读写写呗
gold_water 2012-02-27
  • 打赏
  • 举报
回复
getHandle() //这里第一次被调用时会调用构造函数。

64,683

社区成员

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

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