static关键字有俩作用:(1).控制存储分配;(2).控制一个名字的可见性和连接。 随着C++名字空间的引入,我们有了更好的,更灵活的方法来控制一个大项目的名字增长。 在类的内部使用static是在全程序中控制名字的另一种方法。这些名字不会与全局名冲突,并且可见性和访问也限制在程序内部,使得在维 ...
分类:
其他好文 时间:
2017-06-19 19:43:23
阅读次数:
141
1. 由单例模式中关于static的问题 2. 为什么要有单例模式 3. 多线程安全的单例模式 4. 模版类的单例模式的实现 1. 由单例模式中关于static的问题:“静态成员函数调用了非静态成员函数(构造函数)” 最简单的单例模式如下: 问题来了:在第10行,new 了一个Singleton,此 ...
分类:
其他好文 时间:
2017-06-18 01:44:31
阅读次数:
206
1.静态成员 (1)由keywordstatic修饰 静态变量定义语句在编译阶段就运行,运行过程中不再运行。 (2)分类:静态数据成员、静态成员函数。 (3)静态成员时类的全部对象共享的成员,而不是某一个对象的成员。 2.静态成员的使用 (1)在定义说明前加上statickeyword。比如: st ...
分类:
编程语言 时间:
2017-06-17 17:01:43
阅读次数:
146
1.构造函数的职责 构造函数中仅仅进行那些没有实际意义的初始化。由于成员变量的“有意义”的值大多不在构造函数中确定。 能够的话,使用Init()方法集中初始化为有意义的数据。 长处:排版方便,无需操心类是否初始化。 缺点: 1)在构造函数中不易报告错误,不能使用异常; 2)操作失败会造成对象初始化失 ...
分类:
编程语言 时间:
2017-05-15 18:30:52
阅读次数:
183
一、静态全局变量 理解static关键字之前首先回顾一下C/C++程序的在内存中的分配情况。从低地址到高地址依次分为:代码区、全局数据区、堆区、栈区。函数之外的全局变量和静态变量(包括全局变量和静态变量)都存储在全局数据区,堆区有程序员自己通过malloc,new申请内存,栈区存放函数内部的临时变量 ...
分类:
编程语言 时间:
2017-05-07 01:06:31
阅读次数:
244
CCCallFunc CCCallFuncN CCCallFuncND都用来创建带有回调函数的动作,区别主要在于回调函数是否带有参数 CCCallFunc是执行对应的回调函数,其中回调函数不可带参数。一般使用静态成员函数create创建实例,create声明如下: static CCCallFunc... ...
分类:
其他好文 时间:
2017-03-29 19:00:43
阅读次数:
288
1.引言: 如果你接触过C#,你就会觉得C#中的delegate(委托)十分灵巧,它的用法上和C\C++的函数指针很像,但是却又比C\C++的函数指针更加灵活。并且委托可以一对多,也就是可以注册多个函数,甚至是某个类的非静态成员函数。而实现事件消息机制【1】也十分依赖于委托机制。基于这样的目的,我们 ...
分类:
编程语言 时间:
2017-03-20 21:13:34
阅读次数:
196
最近在浏览朋友写的代码,发现有一个细节非常值得学习,在这里将代码贴出来简单分享一下: pthread_create的定义如下: 新建线程从void *(*start_routine)(void *)函数的地址开始运行,该函数直邮一个无类型指针参数arg。如果需要向start_routine函数传递的 ...
分类:
其他好文 时间:
2017-03-19 17:35:44
阅读次数:
200
正规的C++语言标准目前(截止到C++14)应该还不支持这种调用方法。目前微软似乎在它的VC++中推行一种叫做C++/CLI的标准,有可能会支持这种调用,如果一定要用这种调用方法的话,还应该用VS2013尝试编译运行一下。 实际上,C++语言中类的静态成员函数本身应该是所有这一类对象的集体所具有的行 ...
分类:
编程语言 时间:
2017-03-16 16:19:48
阅读次数:
230
其实类的静态函数就跟全局函数是一个样子的, 只是调用的时候要加下个类修饰符而已.至于为什么不能是非静态成员函数呢, 因为非静态成员函数都会在参数列表中加上一个this指针为为参数, 这样的话你写的线程函数就不符合调用规定了.比如 DWORD WINAPI ThreadFun(LPVOID); 是非静 ...
分类:
编程语言 时间:
2017-02-27 13:13:02
阅读次数:
286