摘要: 有时候,进行类体设计时,会发现某个类的对象是独一无二的,没有完全相同的对象,也就是对该类对象做副本没有任何意义.因此,需要限制编译器自动生动的拷贝构造函数和赋值构造函数.一般参用下面的宏定义的方式进行限制,代码如下:// A macro to disallow the copy constructor and operator= functions // This should be used in the priavte:declarations for a class#define DISALLOW_COPY_AND_ASSIGN(TypeName) \ TypeName(co... 阅读全文
posted @ 2012-07-16 19:58 一点心青 阅读(13580) 评论(0) 推荐(2) 编辑
摘要: 程序开发时,经常遇到根据变量获取其类型信息的需求.例如,某一个函数针对不同的类型参取了不同的优化策略,因而要获取相应的类型信息调用对应的函数.template //将迭代器向前移动d单位void advance(IterT& iter,DistT d); //如果d void advance(IterT& iter,DistT d){ if(iter is a random access iterator) { iter += d; //针对random access 迭代器使用迭代器算术运算 } else{ //针对其... 阅读全文
posted @ 2012-07-16 10:10 一点心青 阅读(1624) 评论(0) 推荐(0) 编辑
摘要: 利用public继承基类,可以将继承的结果分为两类:函数接口继承和函数实现继承. 声明一个纯函数的目的是为了让派生类只继承函数接口.纯虚函数有两个突出的特性: 它们必须被任何"继承了它们"的具体类重新声明,而且它们在抽象类中通常没有定义. 声明非纯虚函数的目的,是让派生类继承该函数的接口和缺省实现. 声明非虚函数的目的,是为了令派生类继承函数的接口及一份强制性实现. 对class进行设计时,声明成员函数,要谨慎选择,不同类型的声明意味根本意义不相同的事情. 下面是经验不足的设计者最常犯的错误: 1.将所有函数声明为非虚函数,相当派生类继承了函数接口和强制性实现,让派生类没有 阅读全文
posted @ 2012-07-16 09:23 一点心青 阅读(1939) 评论(0) 推荐(0) 编辑