静态成员

来源:互联网 发布:电子相册mv制作软件 编辑:程序博客网 时间:2024/06/05 05:20

静态成员

一.属于类而非对象

•静态成员变量不包含在对象实例中,具有进程级的生命周期

•静态成员函数没有this指针,也没有常属性

•静态成员依然受类作用域和访问控制限定符的约束

二外部定义和初始化

•静态成员变量的定义和初始化,只能在类的外部而不能在构造函数中进行

class Account  {     public:             static double s_interest;  };–double Account::s_interest = 0.001;

二.通过类或对象访问

•访问静态成员,既可以通过类也可以通过对象

–Account acc (...), pacc = &acc;  acc.s_interest = 0.002;  pacc->s_interest = 0.003;  Account::s_interest = 0.004;

三.对象共享

•静态成员变量为该类的所有对象实例所共享

–Account acc1 (...), acc2 (...), acc3 (...);  acc1. s_interest += 0.001;  cout << Account::s_interest << endl; // 0.002  acc2. s_interest += 0.002;  cout << Account::s_interest << endl; // 0.004  acc3. s_interest += 0.003;  cout << Account::s_interest << endl; // 0.007  Account::s_interest -= 0.004;  cout << acc1.s_interest << endl; // 0.003  cout << acc2.s_interest << endl; // 0.003  cout << acc3.s_interest << endl; // 0.003

四.静静非静静非静

•静态成员函数只能访问静态成员变量或调用静态成员函数

•非静态成员函数既可以访问静态成员变量或调用静态成员函数,也可以访问非静态成员变量或调用非静态成员函数

这里写图片描述

五.具有成员访问性的全局标识符

•事实上,类的静态成员变量和静态成员函数,更象是普通的全局变量和全局函数,
只是多了一层类作用域和访问控制属性的限制,相当于具有成员访问性的全局变量和全局函数

•类的静态成员变量通常用于表示需要在该类的多个实例化对象间共享的属性,如银行账户的利率

•类的静态成员函数一方面可以独立于对象充当静态成员变量的访问接口,另一方面它也可以在不破坏封装性的前提下,让一个类有能力管理自己的对象