目录
情况一:
证实方法:
结果:
情况二:
证实方法:
结果:
实战1:在同一个类中不同对象中传递消息
方法一:
方法二:
实战2:该类只用创建一次,不想调用每个函数都新建一个对象
方法一:
方法二:
方法三:
思考:
解决方法:
这种在c++中为设计模式中的单例设计模式
情况一:
当A类中有一个static int NUM; 那创建不同对象,是每个对象都有一个NUM空间呢,还是共用一个NUM空间
证实方法:
- 创建一个类,里面public里有一个static int num;
- 新建两个对象,在一个对象上修改num的值
- 然后分别打印出两个对象的num的值
结果:
同个类不同对象共用一个static的内存空间
情况二:
证实方法:
- 新建一个基类,在基类里的public里有一个static int num;
- 再新建一个类,继承上面的基类
- 将基类里的num值修改
- 然后分别打印出两个类的num值
结果:
基类里有static,派生类和基类共用一个static内存空间
实战1:在同一个类中不同对象中传递消息
设计一个销售员SelesPerson类,货品数量一共有10w台,现在招聘3个销售员,经过一个星期的销售,1号销售卖了18909台,2号卖了39876台,3号卖了40021台,输出剩余库存
方法一:
用一个全局变量来存储10w,然后新建一个销售类,里面有销售编号成员和一个销售函数,销售函数就会用全局变量来减去用函数传进来的销售数,在主函数中,先给全局变量赋值,再新建3个销售类,调用销售函数,函数参数传入销售数量,最终输出全局变量。
方法二:
在类中定义一个static成员,上面得出同个类不同成员共用一个static成员空间就可以做到对static成员修改,然后和方法一一样进行销售,最终输出static成员,(可以将static设置在private里,然后定义一个static函数来返回成员,通过类来调用static函数)
实战2:该类只用创建一次,不想调用每个函数都新建一个对象
设计两个操作函数,一个是读文章,一个是写文章,再定义一个计算机类,计算机类有开机,关机功能,每次新建一个对象就等于开机,释放对象就等于关机,只想开一次机和关一次机
方法一:
将一个对象定义为全局变量,然后每个函数都可以操控,只有等程序结束时才会关机释放内存(但要创建一个全局变量)
方法二:
将一个对象进行传参,就可以在函数里通过传进来的参数来调用计算机类(每次要调用的时候都要加参数,麻烦)
方法三:
在计算机里加入一个static成员,该成员是指针,指向自己本身的指针,类型就是自己类的指针类型,然后在外面通过类来将成员设置为空,再定义一个static函数,函数里先判断static成员是否为空,为空就分配空间,返回static成员。如果不为空,也返回static成员,然后操作函数里就通过类来调用static函数,接收返回的static成员,第一次调用的时候就会申请空间,第二次的时候就不会申请空间,用的还是同一个空间
思考:
通过方法三,还是可以再另外实例化对象,再次调用构造函数,有什么方法可以只调用一次构造函数
解决方法:
将构造方法放到私有里面,这样子就无法再另外实例化对象了,只能通过类调用类里的static函数来申请实例化对象,从而在类的内部调用类中私有的构造函数