Compare the efficiency of this function with that of the destructor for a non-reference-counted implementation. Such a function would always call delete
and would almost certainly have a nontrivial runtime cost. Provided that different String
objects do in fact sometimes have the same values, the implementation above will sometimes do nothing more than decrement a counter and compare it to
zero.
和没有引用计数的版本比较一下效率。那样的函数总调用delete,当然会有一个相当程度的运行时间的代价。现在提供的String对象们实际上有时具有相同的值,上面的这个实现在此时只需要做一下减少引用计数并与0进行比较。
(This function performs sanity checking on
index
in the grand C++ tradition, which is to say not at all. As usual, if you'd like a greater degree of parameter validation, it's easy to
add.) (More effetive C++ Item29)
(这个函数实现了C++传统意义上的下标索引(根本不会说“不”)。
如果你想加上参数检查,这是非常容易的。)
How, then, can one talk of virtual constructors ?
那么虚拟构造函数又从何谈起呢?