静态成员数据
2009-03-02 02:24
239 查看
每个类在实例化的时候都有他自己的成员变量,这个成员变量是其他实例所不可见的
即使它们是从同一个类实例化而来。那么当我们需要同一种类共享一个变量或者函数怎么办呢?这个时候静态成员数据就发挥了它的作用,静态成员数据相对于同种类之间是全局的,而相对于其他不同的类却是局部的。这就好像是一种全局数据和成员数据的折衷。
我们在声明静态变量的时候只要在声明变量和函数的前面加上static就可以了:
static int age;
但是要使用它的时候,我们需要对它进行初始化:
对象::age = 0;
因为在创建对象的时候静态变量并没有被分配内存空间,所以我们需要对它初始化,因为它并不在这个对象中,它是属于这个类的全局变量,不是对象的。所以不要忘了初始化它。同样的当对象被销毁的时候,静态变量是不会被销毁的。
如果在一个类中把一个成员函数声明为共有的并且是静态的。那么任何函数都可以访问它,
同时因为它是静态的,所以不通过这个类的实例化对象也能够调用它。 当然通过对象也能够调
用它。
这里需要注意的是,静态成员函数没有this指针,因此不能将它们声明为const,由于在成
员函数中是通过this指针来访问成员数据变量的,因此静态成员函数不能访问非静态成员变量。
即使它们是从同一个类实例化而来。那么当我们需要同一种类共享一个变量或者函数怎么办呢?这个时候静态成员数据就发挥了它的作用,静态成员数据相对于同种类之间是全局的,而相对于其他不同的类却是局部的。这就好像是一种全局数据和成员数据的折衷。
我们在声明静态变量的时候只要在声明变量和函数的前面加上static就可以了:
static int age;
但是要使用它的时候,我们需要对它进行初始化:
对象::age = 0;
因为在创建对象的时候静态变量并没有被分配内存空间,所以我们需要对它初始化,因为它并不在这个对象中,它是属于这个类的全局变量,不是对象的。所以不要忘了初始化它。同样的当对象被销毁的时候,静态变量是不会被销毁的。
如果在一个类中把一个成员函数声明为共有的并且是静态的。那么任何函数都可以访问它,
同时因为它是静态的,所以不通过这个类的实例化对象也能够调用它。 当然通过对象也能够调
用它。
这里需要注意的是,静态成员函数没有this指针,因此不能将它们声明为const,由于在成
员函数中是通过this指针来访问成员数据变量的,因此静态成员函数不能访问非静态成员变量。
相关文章推荐
- 静态成员函数和数据成员
- C++静态数据成员/静态函数成员总结
- 静态数据成员及静态成员函数
- C++static静态数据成员
- 2017-12-14 乱入一道C++类的学习的题(静态数据成员初始化)
- 类的静态数据成员/静态函数
- 【C++基础学习】关于C++静态数据成员
- C++静态数据成员定义及应用浅谈
- C++静态成员数据和静态成员函数小结
- C++ 静态数据成员 静态成员函数
- 静态数据成员 静态函数成员 以及 const 成员变量
- 3-6 静态数据成员与静态成员函数
- error C2864:只有静态常量整型数据成员才可以在类中初始化
- 静态数据成员和静态成员函数
- c++远征之模板篇——静态数据成员,静态成员函数
- 类中静态的方法、成员函数只能访问静态的数据成员或者静态的方法
- 类静态数据成员的定义及初始化
- static(c++)静态数据成员和静态成员函数
- C++静态数据成员实现
- 不允许 dllimport 静态数据成员