类成员函数
除了static数据成员,类还可以有static成员函数。静态成员函数只能访问其他的static成员,包括数据成员和成员函数。
例3-38
本例声明了一个内联的static成员函数getN。在例3-35中,我们知道对象和非静态成员函数(包括构造函数和析构函数)可以访问像n这样的static数据成员。在本例中,我们看到static成员函数也可以访问static数据成员。它们的差别是,非static成员函数既可以访问static数据成员,也可以访问非static数据成员;而static成员函数只能访问static成员。因此,以下代码包含了两个错误:
static成员函数getN只能访问static数据成员和static成员函数,而setST和st都是非static。像其他的成员函数一样,static成员函数既可以是inline函数,也可以是非inline函数。
假设类C拥有一个static数据成员sVar和一个static成员函数sMeth,它们都是公有的,如下所示:
有两种不同方式来访问类的static成员,我们既可以通过C的对象来访问,也可以直接通过类C来访问。
例3-39
本例展示了两种访问static成员的不同办法。当然,这样做违反了数据成员的信息隐藏原则,我们将sVar设为public仅仅是为了说明访问静态成员的语法。
访问static成员的首选方法是通过类直接访问。static成员毕竟是与类本身相关联,而不是与类的对象相关联。
我们作如下假定:
对象c属于类C。
成员函数om是C的非static成员函数。
成员函数cm是C的static成员函数。
那么,静态成员函数与非静态成员函数的区别如表3-2所示。
表3-2 类成员函数与对象成员函数的比较
类成员函数[转]
时间: 2024-10-24 12:56:24