普通 vs static:
普通成员变量每个对象各自拥有
static成员变量所有对象共享
(注:sizeof不会计算static成员变量的大小,因为static成员变量实际在class外部,被所有class共享)
static成员函数必须不具体作用于某个对象而静态成员函数相反
静态成员变量(函数)本质上是全局变量(变量)
静态成员不需要通过对象就能访问
static成员变量要在所有函数外单独声明或初始化
(注:在静态成员函数中,不能访问非静态成员变量,也不能调用非静态成员函数)
访问静态成员:
- 类名::成员名
CR :: print(); - 对象名.成员名
CR r;
r.print(); - 指针->成员名
CR *p;
p -> print(); - 引用.成员名
CR & ref = r;
int count = ref.num;
当class作为调用的参数或者返回值时,会调用复制构造函数而不是构造函数,所以在使用时应注意。