摘要: 【装饰模式的优缺点】装饰模式的优点:1、比静态继承更灵活;2、避免在层次结构高层的类有太多的特征装饰模式的缺点:1、使用装饰模式会产生比使用继承关系更多的对象。并且这些对象看上去都很想像,从而使得查错变得困难。【装饰模式适用场景】1、在不影响其他对象的情况下,以动态、透明的方式给单个对象添加职责。2... 阅读全文
posted @ 2014-09-16 19:40 williamwood 阅读(153) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2014-09-16 16:11 williamwood 阅读(80) 评论(0) 推荐(0) 编辑
摘要: google test version: 1.6c++ builder version: xe61 download google test 1.62 unzip the zip file. The project file for c++ build is in codegear folder3 ... 阅读全文
posted @ 2014-09-10 17:32 williamwood 阅读(227) 评论(0) 推荐(0) 编辑
摘要: 因为构造和析构函数有开销,所以也许前面定义了,还没用函数就退出了。所以比较好的方法是用到了才定义。 阅读全文
posted @ 2014-07-11 03:01 williamwood 阅读(147) 评论(0) 推荐(0) 编辑
摘要: 主要的理由还是封装。nonmember nonfreind function 不能访问类private 成员变量。这个场景是有一个类提供了一些基本功能,比如class WebBrowser{ public: void clearCache(); void clearHist... 阅读全文
posted @ 2014-07-10 03:01 williamwood 阅读(258) 评论(0) 推荐(0) 编辑
摘要: 举一个容易犯错的例子class Date{private: int month; int day; int year;public:Date(int month,int day,int year){ this->month = month; ... }}//wrong exampleDa... 阅读全文
posted @ 2014-07-09 03:41 williamwood 阅读(146) 评论(0) 推荐(0) 编辑
摘要: 请求的系统资源需要最终还回系统,为了避免遗忘返还这个动作,可以利用析构函数在object销毁时自动调用的特点来实现。简单说就是用object来管理资源。以内存资源为例class Investment {}; Investment* creatInvestment(){...} // factory ... 阅读全文
posted @ 2014-07-08 02:45 williamwood 阅读(153) 评论(0) 推荐(0) 编辑
摘要: 这经常发生在更改代码的时候,当有自己的copy 赋值函数或者copy 构造函数时,编译器就不会维护这两个函数。导致发生遗忘。可能出现的场景class Customer{ private: std::string name; public: Customer(const Custome... 阅读全文
posted @ 2014-07-07 03:08 williamwood 阅读(173) 评论(0) 推荐(0) 编辑
摘要: 赋值给自己,听起来有些不可思议,但是却要引起重视,它很容易把自己隐藏起来。例如1 a[i]=a[j]; 如果 i, j的值一样?2 *px=*py; 如果px py指向同一个object3 rb and pd migh also be a same object.class Base{ ... 阅读全文
posted @ 2014-07-07 02:40 williamwood 阅读(251) 评论(0) 推荐(0) 编辑
摘要: 非强制性,但是个好习惯当使用连锁赋值时很有用x=y=z=10;class Window{ public: Window& operator=(int size) { ... return *this; }}这个规则适用于 -,+, +=,-= etc 阅读全文
posted @ 2014-07-05 03:42 williamwood 阅读(167) 评论(0) 推荐(0) 编辑