1. Copying Elements OutputIter copy(InputIter sourceBeg, InputIter sourceEnd, OutputIter destBeg); OutputIter copy_if(InputIter sourceBeg, InputIter s...
分类:
其他好文 时间:
2014-07-06 18:01:25
阅读次数:
198
非强制性,但是个好习惯当使用连锁赋值时很有用x=y=z=10;class Window{ public: Window& operator=(int size) { ... return *this; }}这个规则适用于 -,+, +=,-= etc
分类:
编程语言 时间:
2014-07-06 16:14:49
阅读次数:
264
在构造函数中不要调用virtual函数,调用了也不会有预期的效果。举个例子class Transaction{ public: Transaction() { log(); } virtual void log() =0;}class BusinessTran...
分类:
编程语言 时间:
2014-07-05 20:43:00
阅读次数:
209
(一)首先有下面的继承体系:
class B {
public:
void mf();
...
};
class D : public B {...};
D x;
以下行为:
B* pB = &x;
pB->mf();
异于以下行为:
D* pD = &x;
pD->mf();
上面两种行为产生的结果不一定相同。看下面这种...
分类:
编程语言 时间:
2014-07-04 09:04:30
阅读次数:
253
由于重新定义继承而来的non-virtual函数是不正确的(见上一个条款),所以这个条款就将问题局限于:绝不重新定义继承一个带有缺省参数值的virtual函数。
(一)
virtual函数是动态绑定的,而缺省参数却是静态绑定。
对象的所谓静态类型,是它在程序中被声明时所采用的类型。
你可能会在“调用一个定义于derived
class 内的virtual函数”的同时,却使用了ba...
分类:
编程语言 时间:
2014-07-04 08:23:12
阅读次数:
412
题目参考了 1 2#define _CRT_SECURE_NO_WARNINGS//用的是STL中的map 和 multiset 来做的,代码写起来比较简洁,也比较好容易理解。//multiset可以允许重复//multiset::iterator it; 用来遍历#include#incl...
分类:
其他好文 时间:
2014-07-03 18:58:25
阅读次数:
253
通常,我们更喜欢重用一个对象而不是重新创建一个。如果对象是不可变的,它就始终可以被重用。下面是一个反面例子,JoshuaBloch明确指出[DON‘TTOTHIS]:Strings=newString("stringette");该语句每次执行时都创建一个新的实例。String构造器中的参数"stringette"本身是一个实例..
分类:
其他好文 时间:
2014-07-02 15:33:43
阅读次数:
231
基本枚举、贪心、递归、分治、递推、模拟STL(pair、vector、set、map、queue、string、algorithm)构造、位运算、常数优化数据结构队列、堆、栈、链表排序(插入、冒泡、快速、归并、堆、桶、基数)二分查找、散列表并查集、哈夫曼树排序二叉树、左偏树、平衡树(Splay/Tr...
分类:
其他好文 时间:
2014-07-01 19:09:02
阅读次数:
193
游戏中的人物伤害值计算问题。
(一)方法(1):一般来讲可以使用虚函数的方法:
class GameCharacter {
public:
virtual int healthValue() const; //返回人物的体力值,派生类可以做出修改
...
}; 这确实是一个显而易见的设计选择。但因为这样的设计过于显而易见,可能不会...
分类:
编程语言 时间:
2014-07-01 15:39:40
阅读次数:
172
这似乎很明显。如果base class的destructor不是virtual,当其derived class作为基类使用,析构的时候derived class的数据成员将不会被销毁。举个例子 我们有个交通工具的类作为基类, 它的析构函数不是virtualclass transportTool{ ....
分类:
编程语言 时间:
2014-07-01 10:27:30
阅读次数:
192