7.2 重载的例子

现在回过头来看看前面的例子,这里用重载函数来改写。如前所述,重载的一个很重要的应用是构造函数。可以在下面的Stash类中看到这一点。

7.2 重载的例子 - 图1

7.2 重载的例子 - 图2

Stash()的第一个构造函数与前面一样,但第二个有一个Quantity参数指明分配内存位置的初始大小。在这个定义中,可以看到quantity的内部值与storage指针一起被置零。在第二个构造函数中,调用inflate(initQuantity)增大quantity的值可以指示被分配的存储空间的大小。

7.2 重载的例子 - 图3

7.2 重载的例子 - 图4

当用第一个构造函数时,没有内存分配给storage,内存是在第一次调用add()来增加一个对象时分配的,另外,当执行add()时,当前的内存块不够用时也会分配内存。

下面的测试程序中,两个构造函数都会被执行。

7.2 重载的例子 - 图5

7.2 重载的例子 - 图6

对于stringStash调用构造函数,使用了第二个参数。假如知道需要解决的问题的一些情况,就可以为Stash选择初始大小。