非窗口类中使用定时器的方法及相关知识的介绍
2006-07-20 11:38:11 来源:WEB开发网我们可以用成员访问操作符点(.)和箭头(->)为一个类对象或指向类对象的指针访问静态成员函数,也可以用限定修饰名直接访问静态成员函数,而无需声明类对象。
静态成员函数遵循约束:
(1) 不能用成员选择符(.或->)访问非静态成员。
(2) 不能说明为虚函数。
(3) 不能与有相同参数类型的非静态成员函同名。
(4) 不能声明为const或volatile。
(5) 出现在类体外的函数定义不指定关键字static
2.3 映射表类CMap
映射表类(CMap)是MFC集合类中的一个模板类,也称作为“字典”,就像一种只有两列的表格,一列是关键字,一列是数据项,它们是一一对应的。关键字是唯一的,给出一个关键字,映射表类会很快找到对应的数据项。映射表的查找是以哈希表的方式进行的,因此在映射表中查找数值项的速度很快。举个例子来说吧,公司的所有职员都有一个工号和自己的姓名,工号就是姓名的关键字,给出一个工号,就可以很快的找到相应的姓名。映射类最适用于需要根据关键字进行快速检索的场合,我们的程序中就用映射表来保存计时器标志值和类实例指针,用计时器的标志值作为关键字。
三、让静态成员函数也能访问非静态成员函数
从上面的叙述可以看出来,在类中静态成员函数只能引用静态数据成员和静态成员函数,如何才能让静态成员函数也能引用非静态的成员函数和成员变量呢?这也是我们后面将会用到的。
分析一下静态成员函数和非静态成员函数的区别,我们会发现非静态成员函数之所以能访问所有的成员函数和成员变量,是因为它有个隐含的参数this,访问成员函数和成员变量的时候,实际上是在前面添加了个引用的符号"this->",所以我们就可以试着将this这个指针作为静态成员函数的一个参数传递进去,这样不就可以在静态成员函数中访问所有的成员函数和成员变量了吗?下面给出一个实现的例子:
更多精彩
赞助商链接