C++相关
文章平均质量分 75
zade
这个作者很懒,什么都没留下…
展开
-
关于set元素的不可直接更改
set的元素类型和比较函数(或者函数对象)是可以配置的,但是一旦配置就不能更改。set的元素类型不可更改是很自然的,这本就是模板的天然含义。set的比较函数虽然可以得到,但是得到的是copy,不是引用或者指针,所以不能修改(修改比较函数对象的参数)。set里面的元素不能直接的更改,一般的做法是先删除旧元素,然后添加新元素,这当然是为了维护里面元素的有序性。单独的修改set的比较函数和元素数值,都有原创 2005-12-06 11:45:00 · 3728 阅读 · 0 评论 -
模板特化,全特化,偏特化,全部特化,部分特化的含义
这几个名词真是把人搞混了(是因为有的著作,甚至名著以讹传讹),我最近整理了以下,看看大家的意见如何。模板特化:任何针对模板参数进一步进行条件限制设计的特化版本。《泛型思维》全特化就是全部特化,即针对所有的模板参数进行特化。《c++ primer》偏特化就是部分特化,即针对部分模板参数进行特化。《c++ primer》全特化和偏特化的定义不是很严格,所以有的时候不容易让人理解。举例如下:templa原创 2005-12-06 11:50:00 · 6494 阅读 · 6 评论 -
Bjarne Stroustrup大师谈
artima网站对在Bjarne Stroustrup在2003进行了专访,摘录了一些有感触的内容。1. 有责任维护类的不变性的函数应该成为类的接口The functions that are taking any responsibility for maintaining the invariant should be in the class 2. 如果一个类的成原创 2005-12-14 10:40:00 · 1183 阅读 · 0 评论 -
迭代的概念
Christopher Diggins在他的blog文章introducing the Iterable Concept中提到了迭代的概念,且看他的定义的实例:In pseudo-C++ this translates to roughly: concept Iterable { public { typedef value_type; templatetypename Proce原创 2005-12-15 21:06:00 · 1496 阅读 · 0 评论 -
C++ enum类型的一个更好的用法
C++ enum类型的一个更好的用法 enum 类型是c++的一个基本的类型,用于声明可以枚举的常量.相对于C#的enum, c++的enum有几个缺陷:1 不支持组合特性,也即FlagsAttribute属性;2 不支持toString方法,转换为字符串需要特别的函数实现;3 不支持命名空间的特性.前面的两个比较明显原创 2008-02-22 14:39:00 · 19414 阅读 · 6 评论 -
covariant return type and boost::shared_ptr
covariant return type and boost::shared_ptr covariant return type翻译为协变返回值,意义就是在虚函数的返回值上,可以使用子类对象,而不必是基类对象.下面是一个例子:struct Object { public: virtual ~Object()原创 2008-03-06 14:53:00 · 3817 阅读 · 0 评论 -
boost::weak_ptr和enable_shared_from_this
v/:* {behavior:url(#default#VML);}o/:* {behavior:url(#default#VML);}w/:* {behavior:url(#default#VML);}.shape {behavior:url(#default#VML);} 1280x1024 Normal 0原创 2008-07-16 14:34:00 · 8865 阅读 · 0 评论