就银行家算法而言,其本身不难,在这个实验里我用了数组结构来表示资源的占有、申请、以及最大需求量。但是对于数组的操作确实是一个头疼的问题,我不可能总是去遍历数组进行数组的加减 赋值 比较大小的运算,为此 我首先想到的是符号重载 期望能够用+-><号等进行直接的运算,想法是好的,但是操作起来 让我相当头疼。
1.我想要我的符号都能实现整型数组的算术运算与逻辑运算,而不局限于我的对象,结果操作符重载总是要求至少要有一个类类型。后来查资料,知道 这是c++一种保护机制,防止基本类型的运算规则被开发者随意更改。
2.我使用了指针来指向数组,在实际应用中往往一不小心就会出现数组赋值的时候,不同指针指向同一块内存空间,使得在后面程序运行中把这块区域的数据给改了 ,影响了共用的这块区域各指针所要表达的内容。导致运行混乱的问题。更可怕的是内存区域管理十分混乱,指针到处乱指,最后我都不知道哪些内存没被释放掉 出现内存空间泄漏问题。
总的来说,是我在搭建这个类的时候,没把数据结构建好。比如在创建对象的过程中,就必须先为需求量等开辟一块内存空间,而不能只是指针,在这里我想说下,指针是个很灵活的东西,可以指向任何的内存单元,这时候要注意,数组的赋值可不能只是简单的指针间赋值,这样根本不能实现数组空间之间的数据更改,反而会导致被赋值的那块数组在内存空间中丢失 发送内存泄漏。虽然说这个很基本,很好理解,可是在开发过程中我还是时不时出现这样的错误。
后来我就一怒之下把所有的结构给废了 重新来写,这一次我不再利用符号重载了 ,改用自己在类中写的函数来实现。这样的
话问题就得到较好的解决,其实我现在想 这样做也太麻烦了,为何不把这些运算函数直接写成类的友元函数,这样不用老是要创建对象去使用。
同时我觉的在开发过程中,务必要对逻辑判断的地方加以重视,应该事先就要对这些判断的位置进行规划即什么条件怎么处理。