静态成员
静态数据成员
在类的多个对象之间实现数据共享,就可以使用静态数据成员。
静态数据成员是一种特殊的数据成员,它以关键字static开头。
静态数据成员的定义格式是:
- static 数据类型 数据成员名;

静态数据成员初始化与一般数据成员初始化不同,初始化实在类体外进行的,格式如下:
- 数据类型 类名::静态数据成员名=初始值;
静态数据成员不属于某个对象,可以通过类名加域作用符进行引用,如:
- 类名::静态数据成员名
也可以通过对象引用它:
- 对象名.静态数据成员名
静态数据成员的特点:
- 不属于某个对象,而属于整个类的
- 不随对象的创建而分配内存空间,它也不随对对象被释放而撤销,只有在程序结束时才被系统释放。
- 只能在类体外被初始化,在类的声明中只能声明静态数据成员的存在---由于类的声明是抽象的,静态数据成员的初始化需要在类的外部进行,通过类名对它进行访问。

上述代码结果:

- 如果没有对静态数据成员赋初值,则编译系统自动赋初值为0(注释掉静态数据成员的初始化代码,DevC++编译器总是会报错,应该是编译器的问题)
- 定义为私有的静态的数据成员,必须通过公有的成员函数来引用

上述代码结果:

- 静态数据成员的值改变,则在各个对象中这个数据成员的值都同时改变。
静态常量成员
指整个类的所有对象的共享常量
static const 类型 数据成员名=常量表达式
例:
class sample{
static const int SIZE=10;
int storage[SIZE];
...
}
静态成员函数
静态成员函数的格式:
static 函数类型 成员函数名(参数表);
- 静态成员函数也是类的一部分,而不是对象的一部分
- 定义静态成员函数的目的主要是访问静态数据成员
访问方式:
类名::静态成员函数名(参数表)
或
对象名.静态成员函数名(参数表)
- 在静态成员函数中可以直接引用其静态成员,而引用非静态成员时需用对象名引用
- 由于静态成员函数没有this指针,而非静态成员函数有this指针,故静态成员函数不能访问非静态成员。
静态成员函数的用法说明:
- 对于公有的静态成员函数来说,可以通过类名或对象名来调用。
- 静态成员函数只能直接使用本类的静态数据成员或静态成员函数,不能直接使用非静态的数据成员,只能引用使用。
- 静态成员函数的实现部分在类定义之外定义时,不能加修饰词static。
- 不能把静态成员函数定义为虚函数。
- 可将静态成员函数定义为内联的,定义方法与非静态成员函数相同。

上述代码结果:

本文介绍了C++中的静态成员,包括静态数据成员和静态成员函数。静态数据成员不属于特定对象,而是整个类共享,可通过类名或对象引用。静态成员函数没有this指针,主要用于访问静态数据成员。静态常量成员则是类的共享常量。静态成员的初始化、访问方式和特性都在文中进行了详细阐述。
1万+

被折叠的 条评论
为什么被折叠?



