要还是用法的方面写的多,注意事项写了一个重要的,毕竟这个编译错误卡了我几天,下面开始简单介绍,文中有很多类比的地方,如果不当,还请谅解。
static
一个类中的成员,可以是一个实例成员,也可以是一个类范围成员(static).
静态数据成员:
目的:为了解决数据共享的问题。多个类对象实现数据的互通。
即使对象不存在,静态数据成员也是存在的。
如有有很多对象,也只有一份。
可以看成一个全局变量,为何要封装在类中呢,为了限制该变量的作用范围,还有一个作用,就是增加可读性和可维护性。
1 | ///在.h声明文件当中声明静态数据成员 |
静态数据成员的访问:
1:无需创建对象便可访问,如:A::x=5;
2: 在类的成员函数中可以访问,如:x=5或者A::x = 5;
静态成员函数:
说明:
1:静态成员函数没有宿主对象,所以不能用this
2:静态成员函数不能直接访问非静态数据成员
3:普通成员函数可以调用静态成员函数
非静态的数据成员肯定实在对象确定以后才有的,对象存在非静态数据才存在(对应第2条)。
注意
下面讲我觉得非常重要的一点,就是静态数据成员在类中,你可以认为是一个声明,就和函数一样,然后在定义文件.cpp文件中进行定义(并初始化)。
为了方便理解,给出全部代码。例子:通讯录条目,有姓名和电话两个数据成员。创建三个文件,主文件,声明文件,定义文件,下面是代码:
1 | ///main.cpp |
如有错误,还请指出~