c++静态变量,静态函数,私有静态变量的使用小记

时间:2022-08-22 01:02:05

自从上了小学才发现,记忆力大不如前了,看来小的时候没有开发出来,导致记忆模块荒凉遍野,现在很多学过,记过,用过的东西,一段时间以后发现除了有些印象外,再无其他,所以正证明那句话:“好记性不如烂笔头”。做个笔记不但是为以后重新温习做记录,也可以加深一下印象,有百利而无一害,并且在网上记录一下,方便网民们相互提醒交流,万一以后老了翻翻看,还能根据记录写写个人传记什么的。

 

前段时间面试一家大公司世界500强,笔试中考了两个模式,一个是singleton,一个是观察者模式,平时开发我也用不到模式,慢慢的什么模式都不记得了,所以又被鄙视了。。。shit。那平时搞开发我都用了什么??? 尼玛,我好想啥也没用啊!

 

//Singleton.h
#include <iostream>
using namespace std;
class Singleton
{
public:
static Singleton* Instance();
protected:
Singleton();
private:
static Singleton* _instance;
};


 

//Singleton.cpp
#include "Singleton.h"
#include <iostream>
using namespace std;
Singleton* Singleton::_instance = 0;
Singleton::Singleton()
{
cout<<"Singleton...."<<endl;
}
Singleton* Singleton::Instance()
{
if (_instance == 0)
{
_instance = new Singleton();
}
return _instance;
}


 

//main.cpp
#include "Singleton.h"
#include <iostream>
using namespace std;
int main(int argc,char* argv[])
{
Singleton* sgn = Singleton::Instance();
return 0;
}


上面三个模块是singleton模式的示例,因为里面涉及到了静态私有变量和静态全局函数,所以记录一下两处的用法特点

在main函数中,调用公有静态函数方式为:【类名】::【函数名】() ,写函数定义的时候,前面不要加static,这个我经常多写一个static,貌似受到c静态函数的影响。

静态变量要先初始化才能使用,在上面的代码中,初始化为:Singleton* Singleton::_instance = 0; 同样前面不能加static!有朋友说这样的私有成员,不在本类中同样能出现,访问权限就跟public一样了,我想说的是,私有静态变量也就在初始化的时候可以在外部出现,没有其它肯能的情况允许它出来放风了。

好了,关于c++中静态变量及其函数的使用大概就是这样,记录一下,以后忘了还得过来翻过,不过我不能忘记我记录过啊!!!