代码如下:varc=1classSingleton{classvarshared:Singleton{//--struct里边的constant不会被重复定义?why?structStatic{staticletb=c++staticletinstance=Singleton()}println("bis\(Static.b)")returnStatic.instance}}varsingle1=Singleton.sharedc++;varsingle2=Singleton.shared输出结果为:bis1bis1问题为什么b没有改变?
2 回答

翻阅古今
TA贡献1780条经验 获得超5个赞
static关键字的含义就是不属于任何类的实例,而是属于类本身,更重要的是,static修饰的对象和变量会在类第一次被加载时存储在内存中的静态储存区域,只要程序在运行,这块区域就不会被清除掉,也就是说static修饰的instance会一直保存在静态储存区域并且只有一份。所以我们在其他类访问instance的时候,都是访问的这块区域,这就是单例模式的原理所在。
添加回答
举报
0/150
提交
取消