C++静态成员

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

静态成员

静态数据成员

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

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

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

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

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

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

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

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

也可以通过对象引用它:

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

静态数据成员的特点:

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

上述代码结果:

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

上述代码结果:

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

静态常量成员

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

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

例:

class sample{

static const int SIZE=10;

int storage[SIZE];

...

}

静态成员函数

静态成员函数的格式:

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

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

访问方式:

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

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

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

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

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

上述代码结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值