一、static类型的成员变量(也是全局变量)不能在构造函数中定义,类中的静态成员变量的初始化必须在类外实现!!
类的定义是在头文件中,如果类的成员变量是static,static声明的成员变量是说明这个变量是属于整个类的,而不是某个对象的(除了单例模式,一个类都可以定义无数个对象),所以对static成员变量的定义/初始化 不可以放在构造函数中(定义对象时才会调用的函数),只能放在类对应的源文件中函数之外的全局位置。
在CUtilityTool类的.h文件:
在cpp文件中:
二、静态成员变量(静态全局变量)特性:
1. 静态成员:为所有类对象所共享,不属于某个具体的实例
2. 静态成员变量:必须在类外定义,定义时不添加static关键字
3. 类静态成员:即可用(类名::静态成员) 或者 (对象.静态成员)来访问
4. 静态成员函数:没有隐藏的this指针,不能访问任何非静态成员
5. 静态成员和类的普通成员一样,也有public、protected、private3种访问级别,也可以具有返回值
另外,静态函数只能调静态成员,友元函数和静态函数都没有this指针
三、静态局部变量:初始化语句执行一次,值可以变动多次
静态局部变量在函数内部初始化。只初始化一次!但不是说static类型变量值不能改变。值是可以变动的。只是那条初始化语句“只执行一次”!其他的对static变量的操作,比如赋值、运算等语句可以多次执行,static变量值会跟着变动!
四、普通函数可以访问 静态局部变量吗?=》可以
静态成员函数只能访问静态成员变量,
但普通成员函数却能访问所有变量包括静态成员变量;