摘要: C++的设计者Bjarne Stroustrup下了很大的功夫想使用户自定义类型尽可能地和固定类型的工作方式相似。这就是为什么你可以重载运算符,写类型转换函数(见条款M5),控制赋值和拷贝构造函数,等等。他做了这么多努力,那你最少也该继续做下去。 让我们看看赋值。用固定类型的情况下,赋值操作可以象下面这样链起来:int w, x, y, z; w = x = y = z = 0; 所以,你也应该... 阅读全文
posted @ 2009-04-17 17:29 AlexusLi 阅读(328) 评论(0) 推荐(0) 编辑
摘要: 有时,一个类想跟踪它有多少个对象存在。一个简单的方法是创建一个静态类成员来统计对象的个数。这个成员被初始化为0,在构造函数里加1,析构函数里减1。(条款M26里说明了如何把这种方法封装起来以便很容易地添加到任何类中,“my article on counting objects”提供了对这个技术的另外一些改进) 设想在一个军事应用程序里,有一个表示敌人目标的类:class enemytarget ... 阅读全文
posted @ 2009-04-17 15:35 AlexusLi 阅读(273) 评论(0) 推荐(0) 编辑
摘要: 顽固的PASCAL和Ada程序员会经常想念那种可以任意设定数组下标上下限的功能,即,数组下标的范围可以设为10到20,不一定要是0到10。资深的C程序员会坚持一定要从0开始计数,但想个办法来满足那些还在用begin/end的人的这个要求也很容易,这只需要定义一个自己的array类模板:template class array { public: array(int lowbound, int ... 阅读全文
posted @ 2009-04-17 15:07 AlexusLi 阅读(329) 评论(0) 推荐(0) 编辑
摘要: [上一页][下一页] 条款12: 尽量使用初始化而不要在构造函数里赋值 看这样一个模板,它生成的类使得一个名字和一个t类型的对象的指针关联起来。template class namedptr { public: namedptr(const string& initname, T *initptr); ... private: string name; T *ptr; }; (... 阅读全文
posted @ 2009-04-17 12:19 AlexusLi 阅读(346) 评论(0) 推荐(0) 编辑
摘要: [上一页][下一页] 条款11: 为需要动态分配内存的类声明一个拷贝构造函数和一个赋值操作符 看下面一个表示string对象的类:// 一个很简单的string类 class string { public: string(const char *value); ~string(); ... // 没有拷贝构造函数和operator= private: char *data;... 阅读全文
posted @ 2009-04-17 11:45 AlexusLi 阅读(337) 评论(0) 推荐(0) 编辑