benxintuzi

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
上一页 1 ··· 4 5 6 7 8 9 下一页

2015年5月28日

摘要: 简单工厂模式的不足:加入新产品的同时需要修改工厂类,违背“开闭原则”。模式动机:增加一个抽象工厂类,再定义具体工厂类来生产具体的产品,增加新产品时只需要添加产品类和对应的具体工厂类即可。由于我们是对抽象工厂进行编程,因此可以在不修改抽象工厂的前提下增加新产品。模式定义:工厂方法模式(Factory ... 阅读全文
posted @ 2015-05-28 16:44 benxintuzi 阅读(394) 评论(0) 推荐(0)

摘要: 考虑如下设计: 1 #include 2 3 using namespace std; 4 5 class Entry 6 { 7 public: 8 Entry(const string& name, const string& address, const string& phone... 阅读全文
posted @ 2015-05-28 12:11 benxintuzi 阅读(244) 评论(0) 推荐(0)

摘要: 如下为const修饰的几种类型:char name[] = "benxintuzi";char* p1 = name; // non-const pointer, non-const dataconst char* p2 = name; // non-const pointer, const dat... 阅读全文
posted @ 2015-05-28 10:37 benxintuzi 阅读(175) 评论(0) 推荐(0)

摘要: 1>以const替换#define•比如用const double Ratio = 1.653替换#define RATIO 1.653因为宏定义在预处理阶段就会被替换成其所指代的内容,然后才是对替换后的内容进行编译,因此编译器永远不能发现宏的存在。此时如果宏变量RATIO出现问题,那么编译器只会报... 阅读全文
posted @ 2015-05-28 09:26 benxintuzi 阅读(305) 评论(0) 推荐(0)

2015年5月27日

摘要: 假设类Investment是各种关于投资的基类,股票类Stock继承自Investment。有一个工厂函数可以返回一个具体的Investment对象: 1 #include 2 3 using namespace std; 4 5 class Investment //... 阅读全文
posted @ 2015-05-27 11:14 benxintuzi 阅读(321) 评论(0) 推荐(0)

2015年5月26日

摘要: 考虑一个class用来表示顾客,我们自己实现copying函数而非由编译器提供(注:编译器对于copying函数的默认实现就是将对象的所有成员变量都复制一份): 1 #include 2 3 using namespace std; 4 5 void logCall(const string&... 阅读全文
posted @ 2015-05-26 15:32 benxintuzi 阅读(246) 评论(0) 推荐(0)

摘要: 什么是自我赋值,就是 v = v这种类型的语句,也许很多人都会说鄙视这种写法,但是如下的写法会不会出现呢?比如:a[i] = a[j]; // 不巧的是i可能和j相等 *px = *py; // 也许px和py刚好指向同一个对象呢上述例子都是隐含的自我赋值。再举一例: 1 class... 阅读全文
posted @ 2015-05-26 14:24 benxintuzi 阅读(435) 评论(0) 推荐(0)

摘要: 为了编程的简洁性,有时候需要串联赋值,如:x = y = z = 15; 由于赋值采用右结合,因此上述语句被解释为:x = (y = (z = 15));为了实现串联赋值,复制操作符函数必须返回一个指向操作符左侧实参的的引用,如下: 1 class Widget 2 { 3 public: 4 ... 阅读全文
posted @ 2015-05-26 13:48 benxintuzi 阅读(155) 评论(0) 推荐(0)

2015年5月25日

摘要: 如下是一个股票交易的例子: 1 class Transaction // 交易的基类 2 { 3 public: 4 Transaction(); 5 virtual void logTransaction() const ... 阅读全文
posted @ 2015-05-25 15:22 benxintuzi 阅读(306) 评论(0) 推荐(0)

摘要: 如果一个对象是独一无二的,那么我们就不应该提供copy构造函数和copy assignment操作符函数(二者统称为copying函数)。但是即使我们不定义它们,编译器也会在别人调用它们时默认提供,如何拒绝编译器的这种行为呢?由于编译器自动生成的函数都是public的,因此你可以提供private的... 阅读全文
posted @ 2015-05-25 09:11 benxintuzi 阅读(252) 评论(0) 推荐(0)

上一页 1 ··· 4 5 6 7 8 9 下一页