设为首页 加入收藏

TOP

effectiveC++(十八)(三)
2010-12-26 23:21:08 来源: 作者: 【 】 浏览:4114
Tags:effectiveC 十八
nd;         // 下限, 上限

  vector<t> data;             // 数组内容; 关于vector,
                              // 请参见条款49

  boundscheckingstatus checkingbounds;
};

目前为止声明的成员函数是基本上不用想(或深思,沉思)就该声明的。一个允许用户确定每个数组上下限的构造函数,一个拷贝构造函数,一个赋值运算符和一个析构函数。析构函数被声明为非虚拟的,意味着这个类将不作为基类使用(见条款14)。

对于赋值运算符的声明,第一眼看上去会觉得目的不那么明确。毕竟,c++中固定类型的数组是不允许赋值的,所以好象也应该不允许array对象赋值(参见条款27)。但另一方面,数组似的vector模板(存在于标准库——参见条款49)允许vector对象间赋值。在本例中,决定遵循vector的规定,正如下面将会看到的,这个决定将影响到类的接口的其他部分。

老的c程序员看到这个接口会被吓退:怎么竟然不支持固定大小的数组声明?很容易增加一个构造函数来实现啊:

array(int size,
      boundscheckingstatus check = no_check_bounds);

但这就不能成为最小接口了,因为带上下限参数的那个构造函数可以完成同样的事。尽管如此,出于某些目的去迎合那些老程序员们的需要也可能是明智的,特别是出于和基本语言(c语言)一致的考虑。

还需要哪些函数?对于一个完整的接口来说当然还需要对数组的索引:

// 返回可以读/写的元素
t& operator[](int i

首页 上一页 1 2 3 4 5 下一页 尾页 3/5/5
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇effectiveC++(十九) 下一篇effectiveC++(十七)

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: