5.1静态数据成员 静态数据成员描述类的总体信息,由于 全局类作用于所有程序文件,故全局类 的静态数据成员也必须作用于所有程序 文件 联合union的数据成员必须共享存储空 间,而静态数据成员各自独立分配存储 单元,因此,静态数据成员不能成为联 合的成员
5.1 静态数据成员 静态数据成员描述类的总体信息,由于 全局类作用于所有程序文件,故全局类 的静态数据成员也必须作用于所有程序 文件。 联合union的数据成员必须共享存储空 间,而静态数据成员各自独立分配存储 单元,因此,静态数据成员不能成为联 合的成员
【例5.3】本例说明了全局类静态数据成员的作用 域不能局限于程序文件 class /错误,不能修改只读 对象的普通数据成员 const int P::r=0; int a; void P::inc()const static 正确,可以修改 a++; static 只读对象的普通静 p++ consti说明调用inc static 态数据成员 r++ 的对象为只读对象 public: /错误,不能修改只 void inc 读静态数据成员 union UNTP P(intX)Xp+=X,开 static int c; static int P:p=6 /错误,不能使用static long d; ; static int P::q=0; void main(void){} /错误,static声明 p:q局限于程序文件
【例5.3】本例说明了全局类静态数据成员的作用 域不能局限于程序文件。 class P{ int a; static int p; static int q; static const int r; public: void inc( )const; P(int x) { p+=x; }; }; int P::p=0; static int P::q=0; const int P::r=0; void P::inc( )const { a++; p++; r++; } union UNTP{ static int c; static long d; }; void main(void) { } //错误,static声明 p::q局限于程序文件 const说明调用inc 的对象为只读对象 //错误 ,不能修改只读 对象的普通数据成员 //正确,可以修改 只读对象的普通静 态数据成员 //错误 ,不能修改只 读静态数据成员 //错误 ,不能使用static
5.2静态函数成员 静态函数成员的访问权限及继承规则同 普通函数成员没有区别,同样,静态函 数成员也可以缺省参数、省略参数以及 进行重载。不同的是,普通函数成员的 第一个参数为隐含this参数,而静态函数 成员则没有隐含this参数。 ■调用静态函数成员同访问静态数据成员 一样
5.2 静态函数成员 静态函数成员的访问权限及继承规则同 普通函数成员没有区别,同样,静态函 数成员也可以缺省参数、省略参数以及 进行重载。不同的是,普通函数成员的 第一个参数为隐含this参数,而静态函数 成员则没有隐含this参数。 调用静态函数成员同访问静态数据成员 一样
5.2静态函数成员 私有的和受保护的静态函数成员不能被 普通函数main访问,除非main被定义为 类A的友元函数
5.2 静态函数成员 私有的和受保护的静态函数成员不能被 普通函数main访问,除非main被定义为 类A的友元函数