附录A3.1 行为类(包含一些静态成员函数或者类型定义的类,永远不需要被创建)
struct DebugBoundsChecker
{
static void CheckBounds(size_t n,size_t nMax)
{
if(n<0 || n>=nMax) throw "out of bounds";
}
};
struct ReleaseBoundsChecker
{
static void CheckBounds(size_t n,size_t nMax)
{
}
};
template <typename T,size_t MAX_ELEMS=8,typename BoundsChecker=DebugBoundsChecker>
class CMyArray
{
};
附录A3.2 仿真的动态绑定(允许把派生类的名字提供给基类,这样就可以省去滞后编译动态绑定带来的开销)