非窗口类中使用定时器的方法及相关知识的介绍
2006-07-20 11:38:11 来源:WEB开发网<数据类型><类名>::<静态数据成员名>=<值>
对于上面的例子这样初始化:
CString CPerson::szCommpanyName = "网进科技";
这表明:
(1) 初始化在类体外进行,而前面不加static,以免与一般静态变量或对象相混淆。
(2) 初始化时不加该成员的访问权限控制符private,public等。
(3) 初始化时使用作用域运算符来标明它所属类,因此,静态数据成员是类的成员,而不是对象的成员。
在类的成员函数中可以直接引用该类的静态数据成员,而不必使用成员访问操作符。但是在非成员函数中,我们必须一两种方式之一访问静态数据成员。
(1) 使用成员访问操作符。
例如:me是CPerson的一个实例,在非成员函数中可以这样应用其中的静态数据成员:
CString TheCommpanyName = me.CommpanyName;
(2) 因为类静态数据成员只有一个拷贝,所以它不一定要通过对象或者指针来访问。方法二就是用被类名限定修饰的名字直接访问它。当我们不通过类的成员访问操作符访问静态数据成员时,必须指定类名以及紧跟其后的域操作符,因为静态成员不是全局对象,所以我们不能在全局域中找到它。如:
CString TheCommpanyName = CPerson::CommpanyName;
顺便说一句静态数据成员还有两个特点:
(1) 静态数据成员的类型可以是其所属类,而非静态数据成员只能被声明为该类的对象的指针或引用。
(2) 静态数据成员可以被作为类成员函数的缺省实参,而非静态成员不能。
2.2.2 静态成员函数
静态成员函数的声明与普通函数的唯一区别就是在前面加一个static。
通常,当前对象的地址(this)是被隐含地传递到被调用的非静态成员函数的。静态成员函数具有类的范围,同非静态成员函数相比,静态成员函数没有this参数,因此它不能访问一般的数据成员,而只能访问静态数据成员、枚举或嵌套类型和其他的静态成员函数。这样使用静态成员函数在速度上可以比全局函数有少许的增长,它不仅没有传递this指针所需的额外的花费,而且还有使函数在类内的好处。如果静态成员函数中要引用非静态成员时,可通过对象来引用。
更多精彩
赞助商链接