对于类中的非静态数据成员,每一个类对象都拥有一个副本,即每个对象的同名数据成员可以分别存储不同的数值,这是保证每个对象都拥有区别于其他对象的特征的需要。而类中的静态成员则是解决同一个类的不同对象之间的数据和函数共享问题的。
静态成员的特性是不管这个类创建了多少个对象,它都只有一个副本,这个副本由所属于这个类的对象共享。这种共享与全局变量或全局函数相比,既没有破坏数据隐藏的原则,又保证了安全性。
静态成员表示整个类范围的信息,其声明以关键字static开始,包括静态数据成员和静态成员函数。
》静态数据成员
静态数据成员声明时要使用关键字static。
示例:
class myclass
{
private:
static a; //私有静态数据成员
int b,c;
};
其中,a是静态数据成员,它被myclass类的所有对象所共享,但它不属于myclass类的任何一个对象,它的作用域是类范围。
静态数据成员在每个类对象中并不占有存储空间,它只是在每个类中分配有存储空间,供所有对象公用。静态数据成员的值对每个对象都是一样的,它的值可以被任何一个对象更新,从而实现了同一类的不同对象之间的数据共享。
静态数据成员的存储与访问: