C++特殊限定符(1)--static
当static来修饰类数据成员时,这个类的所有对象都可以访问它。因为值在内存中持续存在,它可以被对象有效共享。这意味着当一个对象改变static数据成员的值时,就改变了所有对象的这个数据成员的值。
定义一个类:
class NetComputer
{
private:
static int number_logged_on;
public:
NetComputer();
static void showNumber();
void showAddress();
}
静态数据成员。
静态数据成员的特点如下:
(1)被所有的类对象共享。
(2)在类定义中由关键字static声明。
(3)在成员函数外初始化(不需要使用static,但需要使用类名和作用域解析操作符)。
(4)可以通过调用任何对象的普通成员函数对其访问及修改。
(5)可以通过调用类(不是对象)的静态成员函数对其访问及修改。
(6)可以指定访问权限为public或private(或其他)。
静态函数成员。
用static说明的成员函数是用来操作静态数据的。其特点为:
(1)在类定义中,在函数声明前使用static关键字来声明函数为静态。
(2)不需要使用对象及点运算符来调用。
(3)在函数头中,不使用static关键字。
(4)不允许访问非静态数据成员及函数成员。
(5)程序中不存在类对象时,也可以被调用。
说明:
(1)static void showNumber();
(2)典型的调用方式是使用类名及作用域解析操作符,也可以使用对象和点操作符。
NetComputer::showNumber();
(3)例如 void NetComputer::showNumber(){……};
(4)如果一个函数想要修改静态数据及非静态数据,这个函数就不能用static来说明。这意味着普通成员函数可以用来修改静态数据。
(5)如NetComputer::showNumber();
静态成员函数不需要任何对象,因此,可以在没有任何对象的情况下来调用。