自从上了小学才发现,记忆力大不如前了,看来小的时候没有开发出来,导致记忆模块荒凉遍野,现在很多学过,记过,用过的东西,一段时间以后发现除了有些印象外,再无其他,所以正证明那句话:“好记性不如烂笔头”。做个笔记不但是为以后重新温习做记录,也可以加深一下印象,有百利而无一害,并且在网上记录一下,方便网民们相互提醒交流,万一以后老了翻翻看,还能根据记录写写个人传记什么的。
前段时间面试一家大公司世界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++中静态变量及其函数的使用大概就是这样,记录一下,以后忘了还得过来翻过,不过我不能忘记我记录过啊!!!