C++静态成员

静态成员

静态数据成员

在类的多个对象之间实现数据共享,就可以使用静态数据成员。

静态数据成员是一种特殊的数据成员,它以关键字static开头。

静态数据成员的定义格式是:

  • static 数据类型 数据成员名;

C++静态成员_第1张图片

静态数据成员初始化与一般数据成员初始化不同,初始化实在类体外进行的,格式如下:

  • 数据类型 类名::静态数据成员名=初始值;

静态数据成员不属于某个对象,可以通过类名加域作用符进行引用,如:

  • 类名::静态数据成员名

也可以通过对象引用它:

  • 对象名.静态数据成员名

静态数据成员的特点:

  • 不属于某个对象,而属于整个类的
  • 不随对象的创建而分配内存空间,它也不随对对象被释放而撤销,只有在程序结束时才被系统释放。
  • 只能在类体外被初始化,在类的声明中只能声明静态数据成员的存在---由于类的声明是抽象的,静态数据成员的初始化需要在类的外部进行,通过类名对它进行访问。

C++静态成员_第2张图片

上述代码结果:

C++静态成员_第3张图片

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

C++静态成员_第4张图片

上述代码结果:

C++静态成员_第5张图片

  • 静态数据成员的值改变,则在各个对象中这个数据成员的值都同时改变。

静态常量成员

指整个类的所有对象的共享常量

static const 类型 数据成员名=常量表达式

例:

class sample{

static const int SIZE=10;

int storage[SIZE];

...

}

静态成员函数

静态成员函数的格式:

static 函数类型 成员函数名(参数表);

  • 静态成员函数也是类的一部分,而不是对象的一部分
  • 定义静态成员函数的目的主要是访问静态数据成员

访问方式:

类名::静态成员函数名(参数表)

对象名.静态成员函数名(参数表)

  • 在静态成员函数中可以直接引用其静态成员,而引用非静态成员时需用对象名引用
  • 由于静态成员函数没有this指针,而非静态成员函数有this指针,故静态成员函数不能访问非静态成员。

静态成员函数的用法说明:

  1. 对于公有的静态成员函数来说,可以通过类名或对象名来调用。
  2. 静态成员函数只能直接使用本类的静态数据成员或静态成员函数,不能直接使用非静态的数据成员,只能引用使用。
  3. 静态成员函数的实现部分在类定义之外定义时,不能加修饰词static。
  4. 不能把静态成员函数定义为虚函数。
  5. 可将静态成员函数定义为内联的,定义方法与非静态成员函数相同。

C++静态成员_第6张图片

上述代码结果:

C++静态成员_第7张图片

你可能感兴趣的:(开发准备)