真正的拷贝构造函数或者拷贝赋值运算符只对完全相同类型的对象施以构造或赋值操作,并且,其如果是一个模板类的话,模板的参数也必须完全相同。模板“构造函数”和模板“赋值运算符”都不是真正的拷贝构造函数和赋值运算符,因此这种模板函数的出现并不会隐藏原来隐含的拷贝构造函数的声明。
文章来源:
http://my.donews.com/robinchow/2007/01/10/lhiltldtjwkukgbtacjqkosnhqibccxojgzc/
标准库中 string 的模板类:
template<class charT,
class traits= char_traits
class Allocator = allocator<charT> >
class basic_string;
其中 char_traits 部分,它决定了字符的相互作用和比较运算,如eq()(相等)、ne()(不等)、lt()(小于)、compare()(比较字符序列)、find()(搜索字符序列)。因此只需重定义 char_traits 模板即可改变 string 的字符比较操作。
文章来源:
http://my.donews.com/robinchow/2007/01/10/cfjorztxnorsmkaafyrckgebtdmemrppxzeo/
设计准则:绝对不要解引用一个无效的 iterator。
摘要:
- 有效的数值:iterator 指向的位置有效。
- 有效的寿命:iterator 使用时仍然有效。
- 有效的范围:一对 iterators 组成一个有效的范围,first 在 last 之前(或相等),并且两者指向同一个container。
- 防止不合法的操作行为,如修改内置类型的暂时对象。
文章来源:
http://my.donews.com/robinchow/2007/01/10/rwyjwpstnlvfjtxeqzrupbzdkijaqyohunrq/
C++ 中 bool 是一个基本类型,可以通过各种方法来模拟它,但是都存在不同的缺陷:
- 使用 typedef 模拟,bool 不允许重载。
- 使用 #define,bool 不允许重载且通常破坏了 #define。
- enum bool允许重载但在条件表达式中不能进行自动类型转换。bool b = (i == j)是错误的,因为 int 不能隐含地转换成 enums。
- bool 类允许重载但不能让 bool 对象在条件中作测试,除非它能提供自动转换到基本类型,但是提供自动转换却通常会干扰函数重载解析过程。
文章来源:
http://my.donews.com/robinchow/2007/01/15/bszvusphgepqbphvticopjkpfadfapccibyd/