static用法
. 1.局部静态变量
1.1生命周期即存储控件分配
无论在C还是C++中,局部变量主要分为auto和static俩种类型,其中默认类型为aotu类型,该类型的存储空间在计算机的栈上也就是动态存储空间,也就是只要出了作用域空间,生命周期就会结束。加上static之后,该局部变量就会成为静态局部变量。该变量的存储空间也会发生变化,存储空间会变为计算机的堆上,此时该局部变量的生命周期就会发生本质的变化,在程序的运行期间,该变量的生命空间会一直存在。
. 2.静态数据成员以及成员函数(C++独有)
静态数据成员以及成员函数,其实用一句最核心的话:静态数据成员以及成员函数只属于类,而其他数据成员以及成员函数属于类所生成的对象。举个例子:如果想要知道一个类new了多少对象,就可以使用static来实现。对于静态数据变量来说,在内存中只有一个副本,普通成员函数进行调用的时候需要传入this指针。对于静态成员函数来说是没有this指针的。
. 3.外部静态成员以及成员函数
关于在外部静态成员以及成员函数。理解来说,无论在C中还是C++中都会适用,不过就使用的实际情况来说,主要使用在C中,主要是为了限制别的文件对此文件中加了static的外部静态成员以及成员函数的访问。
2.纯虚函数和基类
纯虚函数
1.什么是纯虚函数?
首先呢,要清楚一点的就是纯虚函数一般情况下只有申明,没有定义。因为纯虚函数出现的意义就是为了告诉那些码农们,这个函数是没有实际意义的。虚函数的定义其实很简单,只需要在定义该函数的声明语句的分号之前加***“=0”***就可以将一个虚函数说明为虚函数,这块儿需要注意了,你得先是虚函数,才能是纯虚函数。
2. 纯虚函数的一些特性
2.1 首先 =0 只能出现在类内部的虚函数声明语句处。
2.2 需要注意的是,我们也可以为纯虚函数提供定义,不过定义的函数体必须放在类的外部。因为我们不能在类的内部为一个=0的函数提供函数体。
3. 纯虚函数的意义
我们在实际的项目中会碰上这样一种需求,基类中声明并且定义了一个虚函数,基类的第一层派生了继承了这个虚函数,而此时的这个类并不做具体的是实现,而是它的派生类去作具体的实现。太绕了,举个例子说明:
比如说超市的销售。定义一个基类Base,收费的函数实现就是单价乘以个数。但是单超市想搞促销活动的话,就得继续实现了。首先促销都活动有俩种:一种是库存小于某个值时,恢复原价,另一种是根据顾客得购买量来打折。这样得话就需要实现一个类,它得主要作用就是增加库存值和购买超过量这俩个值。然后再派生俩各类来具体实现这俩种打折方案。其中这个类,是肯定不希望去乱初始化得,因为没有意义。
抽象基类
1.什么是抽象基类?
含有纯虚函数的类就叫做抽象基类。
2.基类的一些注意事项
抽象基类是不能创建对象的。