静态变量

昨天再看设计模式,第一个就看到了单例,于是就涉及到了静态变量,那我就以我的理解简单总结一下吧。


先说单例:

顾名思义就是单个实例,在一个程序中只存在一个类的实例即为单例。

先看一个例子吧

class SingelInstance
{
private:
	SingelInstance(){}
	~SingelInstance(){}
	
public:
	static SingelInstance& GetInstance()
	{
		static SingelInstance instance;
		return instance;
	}
};

当然单例的编写还有很多方式,有网上说的懒汉式啊什么的。我不想用new是因为new完了之后还需要delete,于是直接写一个static好了,程序结束自动释放。免得忘记了。

特点:

1,构造函数私有化(保证类的实例不可以在类外定义,限定了类的实例)

2,类里面需要一个方法来获取类的实例。

3,需要在2的方法中构造一个实例。


解释:为什么实例要定义为static的,然后取实例的方法要写成static的。

1,如果我把实例不是static的,那么他就是一个局部变量,局部变量一旦离开作用域,那么就会销毁。所以根本不能用。

2,向我的第一个例子,为什么把静态实例定义在函数里,而不是类里,如果是类里面,那么编译的时候会有link错误,为什么呢,因为类的静态变量需要初始化,而且还是类外,因为构造函数是私有的,那么初始化肯定会有问题。所以就把实例写在函数里,函数定位static的。


静态变量


静态变量的好处

1,扩大作用域

2,扩大声明周期


于是再说一说静态变量和全局变量的区别

静态全局变量和全局变量。全局变量就作用域和声明周期来讲都是最大的。加上static呢,有一个词叫做物极必反,于是给全局变量加上static之后,只能牺牲他的作用域了,静态全局变量的作用域就仅限于声明的那个cpp了。


静态局部变量也一样,他的作用域仍然还是所在大括号内,但是声明周期却很长。可以持续到程序结束。


讲明白了吧。其实就是如果你有缺点,那么static会增加一个有点。如果你太完美了,那么static会给你添个缺点。

有缺点才完美嘛。嘎嘎!!!


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值