高级程序设计

7 - 常成员函数、静态成员

2020-03-05 14:00 CST
2020-03-14 22:29 CST
CC BY-NC 4.0

在程序运行的不同时刻,一个对象可能会处于不同的状态(对象的数据成员的值)。

可以把类中的成员函数分成两类:

  • 获取对象状态(不改变数据成员的值)
  • 改变对象状态(改变数据成员的值)

常成员函数

为了防止在一个获取对象状态的成员函数中无意中修改对象的数据成员,可以把它说明成常成员函数。

  • 不能对数据进行修改操作(指针对应的内存空间除外)
  • 指出对常量对象能进行哪些操作(只能调用其他的常成员函数)

同类对象如何共享数据

  • 采用全局变量来表示共享数据
    • 共享的数据与对象之间缺乏显式的联系
    • 数据缺乏保护
  • 静态数据成员
    • 声明:class foo { static int bar; };
    • 定义(初始化):int foo::bar = 0;
    • 类的静态数据成员对该类的所有对象只有一个拷贝

静态成员函数:static void foo();

  • 静态成员函数只能访问类的静态成员
  • 静态成员函数没有隐藏的this参数
  • 静态成员函数可以通过具体对象或者直接通过类来访问