摘要:l 概念:观察者模式是把目标对观察者的依赖进行抽象:使目标只知道自己有若干观察者,但不知道这些观察者具体是谁,可能有多少个;当目标状态改变时只要给这些观察者一个通知,不必作更多的事情。这样目标对观察者的依赖就达到了抽象和最小,而目标对具体观察者的依赖被解除了。l 背景:观察者模式要解决的问题为:建立一个(subject)对多(observer)的依赖关系,并且做到当‘一’变化时,依赖这个‘一’的多也能够同步改变。M类也叫混合类,通常包括纯虚函数,并用作抽象接口。M类的特点:不含有任何数据成员不含有构造函数、析构函数或重载描述符含有纯虚函数,是抽象类l 作用:建立一个一对多的依赖关系,并且做到“
阅读全文
文章分类 - c/c++
摘要:在C++中, 构造函数,拷贝构造函数,析构函数和赋值函数(赋值运算符重载)是最基本不过的需要掌握的知识。 但是如果我问你“拷贝构造函数的参数为什么必须使用引用类型?”这个问题, 你会怎么回答? 或许你会回答为了减少一次内存拷贝? 很惭愧的是,我的第一感觉也是这么回答。不好还好,我有理性这个好品质。思索一下以后,发现这个答案是不对的。让我来撕开(有点暴力,但是我喜欢,嘿嘿--龇牙)那件隐藏在真理外的小裤衩,让它袒露在“登徒子”们的眼前吧。先从一个小例子开始:(自己测试一下自己看看这个程序的输出是什么?)view plaincopy to clipboardprint?#include<io
阅读全文
摘要:C++标准转换运算符const_cast前面讲了C++继承并扩展C语言的传统类型转换方式,最后留下了一些关于指针和引用上的转换问题,没有做详细地讲述。C++相比于C是一门面向对象的语言,面向对象最大的特点之一就是具有“多态性(Polymorphism)”。要想很好的使用多态性,就免不了要使用指针和引用,也免不了会碰到转换的问题,所以在这一篇,就把导师讲的以及在网上反复查阅了解的知识总结一下。C++提供了四个转换运算符:const_cast <new_type> (expression)static_cast <new_type> (expression)reinterp
阅读全文
摘要:这篇文章不是讨论(i++)+(i++)+(i++)的计算结果,更不是讨论(i++)+(++i)+(i++)。在C++教程中,我们都会学到:i++和++i是两个表达式,他们都会对i进行自增,但是呢,作为表达式,i++的值是自增之前的值,++i的值是自增之后的值。本文在此基础上,进行一些稍微深入的讨论。从操作符重载的角度,看i++和++i的区别,是一个比较好的切入点。操作符重载假设有一个类Age,描述年龄。该类重载了前置++和后置++两个操作符,以实现对年龄的自增。class Age{public: Age& operator++() //前置++ { ++i; return *this;
阅读全文