摘要: 桥接模式简介:将抽象部分和实现部分分离,抽象部分的变化无关实现,实现部分的变化也无需通知抽象部分。例如假设一个类有M中抽象子类,实现有N中实现方法,不使用桥接模式的复杂度为O(M×N),而使用桥接模式,对类进行抽象/实现层次划分,之后分别进行抽象类派生和实现方法派生,复杂度为O(M+N)。核心: 极类似于网络中层次的划分,应用层不需要考虑链路设计,上层协议调用下层协议,下层协议为上层协议服务。问题多维,可划分层次;应用层:抽象层;底层:实现层。难点:划分层次:抽象层和实现层,抽象层调用实现层,实现层可以独立设计区别:(个人认为使用顺序应该是:结构型设计模式->创建型设计模型-& 阅读全文
posted @ 2013-11-03 21:04 铁甲小宝 阅读(219) 评论(0) 推荐(0)
摘要: 通过上一篇文章,我在分析继承过程中对象的数据结构时,意外发现可以通过地址随意的访问对象的数据,无论是私有的还是公开的。于是做了以下实验,通过实验可以看出来,内存中的数据,只要不是在常量区,只要你能获得目标的地址,你就可以修改它,无论是在const函数中,还是某类的私有成员变量。代码: 1 #include 2 3 /*** 4 * @author:zanzan101 5 */ 6 7 // 测试如何在const函数中修改成员变量 8 class A 9 {10 private:11 int data1;12 int data2;13 public:14 A(): ... 阅读全文
posted @ 2013-11-03 20:30 铁甲小宝 阅读(681) 评论(0) 推荐(0)
摘要: 多重继承:非虚函数,两个基类存在满足覆盖条件的函数时,派生类无法调用其中任何一个函数。该条件只有一个要求:重名。无论返回值、参数、const类型如何,只要重名,即满足覆盖条件。虚继承:伴随虚继承衍生出来了虚基类的概念,当一个B虚继承了A时,A就是B的虚基类,虚基类的概念只存在于虚继承关系两个类之间,当此时C正常继承A时,A相对于C就不是虚基类。无论虚继承还是虚基类,都与虚函数无关。使用虚继承时,两个中间类都必须是虚继承于最基类,否则无论虚函数还是非虚函数,都会产生两份函数。正常使用方法:两个中间类虚继承与最基类,之后最派生类正常继承于两个中间类;两个中间类必须保证不同时覆盖某个虚函数或同时覆盖 阅读全文
posted @ 2013-11-03 20:27 铁甲小宝 阅读(496) 评论(0) 推荐(0)
摘要: 虚函数:覆盖的条件:同名 && 同参 && 同返回值 && 同const类型重载的条件:同名 && (不同参 || 不同const类型)非法的条件:同名 && 同参 && 不同返回值类型非虚函数:覆盖的条件:同名重载的条件:不能重载基类的函数,一旦同名,就会覆盖基类的函数,但是可以平级重载注意:覆盖只能发生在继承过程中,不是继承不能覆盖,出现非法重定义的错误。代码: 1 #include 2 3 /*** 4 * @author:zanzan101 5 */ 6 7 class A 8 { 9 pu 阅读全文
posted @ 2013-11-03 15:43 铁甲小宝 阅读(239) 评论(0) 推荐(0)