静态数据成员和静态成员函数

静态数据成员

  1. 静态数据成员属于类( 准确地说,是属于类中一个对象集合 ) , 而不像普通数据成员那样属于某一对象,因此可以使用“类名∷”访问静态的数据成员。例如上面例子中的 Student∷count。
  2. 静态数据成员不能在类中进行初始化, 因为在类中不给它分配内存空间, 必须在 类外的其它地方为它提供定义。一般在 main()开始之前, 类的声明之后的特殊地带为它 提供定义和初始化。缺省时,静态成员被初始化为零。
  3. 静态数据成员与静态变量一样, 是在编译时创建并初始化。它在该类的任何对象被建立之前就存在,它可以在程序内部不依赖于任何对象被访问。
  4. C + + 支持静态数据成员的一个主要原因是可以不必使用全局变量。依赖于全局变量的类几乎都是违反面向对象程序设计的封装原理的。静态数据成员的主要用途是 定义类的各个对象所公用的数据,如统计总数、平均数等。

静态成员函数

在类定义中,前面有 static 说明的成员函数称为静态成员函数。静态成员函数属于整个类,是该类所有对象共享的成员函数, 而不属于类中的某个对象。
静态成员函数首先是一个成员函数,因此它不能像类以外的其它函数那样使用, 在使用时要用“类名∷”作为它的限定词,或指出它作用在哪个对象上。其次静态成员函数是一种特殊的成员函数,它不属于某一个特定的对象, 要让一个静态成员函数去访问一个类中的非静态成员,既麻烦又没有实际意义。一般而言, 静态成员函数访问的基本上是静态数据成员或全局变量。

  1. 静态成员函数可以定义成内嵌的, 也可以在类外定义, 在类外定义时, 不要用 static 前缀。
  2. 编译系统将静态成员函数限定为内部连接, 也就是说,与现行文件相连接的其它文件中的同名函数不会与该函数发生冲突,维护了该函数使用的安全性, 这是使用静态成 员函数的一个原因。
  3. 使用静态成员函数的另一个原因是, 可以用它在建立任何对象之前处理静态数 据成员,这是普通成员函数不能实现的功能。
  4. 在一般的成员函数中都隐含有一个 this 指针, 用来指向对象自身,而在静态成员 函数中是没有 this指针的,因为它不与特定的对象相联系, 调用时使用如下格式较好
    类名∷静态成员函数名()
small - cat∷total - disp( ) ;

当然把它看作是某个对象的成员也是允许的,如使用以下语句也是正确的:

w1 .total - disp( ) ;
  1. 一般而言, 静态成员函数不访问类中的非静态成员。若确实需要,静态成员函数只能通过对象名(或指向对象的指针) 访问该对象的非静态成员。如把 display( ) 函数定义为静态成员函数时,应将对象作为参数, 可将它定义为:
static void display (small-cat & w)
{ cout<< ”The small - cat weights”<< w .weight<< ”pounds \ n”; }
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值