2012年(66)
分类: C/C++
2012-08-31 13:51:58
static 数据成员独立于该类的任意对象而存在
1、使用static类的优点:
(1)避免与其他类的成员或者全局变量冲突
(2)可以封装
(3)阅读性好
2、定义static成员比较简单,这里略过
3、使用static成员和普通成员没什么区别,略过
4、static成员变量的初始化
static数据成员必须在类定义题的外部定义(正好一次)。不像普通数据成员,static成员不是通过类的构造函数初始化的,而是应该在定义时初始化。在类定义体外部引用类的static成员时,必须指定成员是在哪个类中定义的。static关键字只能用于类定义体内部的声明中,定义时不能标示为static。
class A{
private:
static int m;
static void display(); // 声明
};
int A::m=0; // 定义
void A::display(){
cout<<"m ="<
int main(){
A::display(); // 通过作用域操作符::调用
}
5、const static数据成员
只要初始化式是一个常量表达式,整形const static数据成员就可以再类的定义体中进行初始化
class Count{
public:
static double rate(){return interest_rate;}
static void rate(double);
private:
static const int period=30;
double daily_tbl[period];
};
const static 数据成员在类的定义体中初始化时,该数据成员仍必须在类的定义体之外进行定义:
const int Count::period;
6、static成员不是类对象的组成部分
static数据成员的类型可以是该成员所属的类类型。非static成员被限定声明为其自身类对象的指针或引用
class Bar{
public:
//
private:
static Bar mem1; //ok
Bar *mem2;//ok
Bar &mem3;//ok
Bar mem4;//error 不能脱离类的对象而存在,不像static与对象无关
}