摘要:
首先类之间的关系从宏观上可以分为:关联、依赖、继承(泛化),而其中关联又有两种特例:聚合和组合,不过在UML2.X中聚合和组合合成一种关系了。 从使用的频率来看,关联(包括聚合和组合)关系是使用最为广泛的;其次是依赖和继承 关联和依赖的区别: 从类之间关系的强弱程度来分,关联表示类之间的很强的关系;依赖表示类之间的较弱的关系; 从类之间关系的时间角度来分,关联表示类之间的“持久”关系,这种关系一般表示一种重要的业务之间的关系,需要保存的,或者说需要“持久化”的,或者说需要保存到数据库中的。比如学生管理系统中的Student类和Class(班级)类,一个Student对象属于哪个Class是一个 阅读全文
摘要:
1 使用引用时必须注意 (一)声明一个引用时,必须同时对他进行初始化,试图指向一个已存在的对象(二)一旦一个引用被初始化后,就不能改为指向其他对象 阅读全文
摘要:
原则:1 单一职责原则2 开放封闭原则3 里氏代换原则4 依赖倒转原则一 创建型模式1 简单工厂模式工厂方法模式抽象工厂模式简单工厂模式+反射机制可以替代抽象工厂模式反射机制:研究java的反射机制,为何C++没有,如何实现?2 原型模式主要解决OO语言深拷贝问题java、C#等通过实现cloneble接口。C++类嵌套实现复制拷贝函数3 建造者模式4 单例模式二 结构性设计模式5 适配器模式6 代理模式7 装饰者模式8 组合模式三 行为型8 策略者模式9 模板方法模式10 观察者模式11 备忘录模式A a;A a(); 编译器会当成函数声明A * a=new A();A * a=new A; 阅读全文
摘要:
#define DI_INPUT_NUM 11+2int a = DI_INPUT_NUM * 3那么a = 11+2 *3 = 11+6 =17#define DI_INPUT_NUM (11+2)int a = DI_INPUT_NUM * 3那么 a =(11+2)*3 = 13*3=39上面2中情况可以看到第二种才是宏定义的本意。所以习惯性会加个括号,其实空定义不管是数字或者表达式,都必须加括号,这是编程的很好习惯。 阅读全文
摘要:
关于占用内存的大小,enum类型本身是不占内存的,编译器直接替换。但是enum类型的变量肯定是占内存的.class A{ public: //enum类型本身不占内存 enumEnumTest{ a =1,b =5};};class B{ public: private: //enum理想的变量会占用内存 enumEnumTest enumSample1;};int main(){cout <<"sizeof(Class A) = "<<sizeof(A)<< endl; cout <<"sizeof(Class B 阅读全文
摘要:
在窗口刷新和绘制的过程中,常常需要用到窗口刷新函数。一般用于窗口图形刷新的函数有:UpdateWindows()、Invaldate()、InvaldateRect()。先说UpdateWindows(),当调用这个函数的时候,会立即让当前的窗口失效,然后对整个窗口立即进行重绘。UpdateWindows()函数调用的时候直接将OnPaint调用到目标窗口,使目标窗口立即进行重绘。而Invaldate()函数的调用则不会立即引起窗口重绘,因为Invaldate()函数是通过调用OnPaint函数来进行窗口绘制的,而OnPaint函数在消息队列中的处理优先级较低。所以调用Invaldate函数则 阅读全文
摘要:
为什么在CView类中可以对ON_CHAR进行相应,添加消息处理函数onchar就可以了,但是在CDialog中要对ON_CHAR相应,直接添加不行? CView相当于Text控件,你可以在Text控件里输入文字,因为Dialog对象没有办法直接获取到一个焦点(Focus),就象你没有办法单击某应用程序标题栏,然后改变他的标题。需要重写PreTranslateMessage函数,拦截消息,你写的代码都不用改变,加上下面的BOOL CMyDialog::PreTranslateMessage(MSG* pMsg) { if(pMsg-> == WM_CHAR) OnChar((TCHAR) 阅读全文
摘要:
先把硬盘里除了你装系统的主分区以外的分区全删除运行CMD输入 DISKPART然后输入list disk,找到你要分的盘,假如是要分第1个硬盘的就输入:select disk 0 这样就选择了第一个硬盘然后输入 CREATE PARTITION EXTENDED 这个指令会使用所有的其他的空间创建一个扩展分区,在win7的磁盘管理里的是绿色部分,然后在扩展分区上分出逻辑分区。这样应该就没问题的 阅读全文
摘要:
1 设计一个窗口类2 注册窗口类3 创建窗口4 显示以及更显窗口5 消息循环窗口类中的窗口过程函数处理消息。 阅读全文
摘要:
拿程序调用动态库来说:1 预处理: 宏替换、include展开等2 编译:每个.cpp分别编译成.obj文件。obj文件中记录各个符号名,包括当前cpp能确定地址的符号名、将来链接时工程中其他cpp文件来确定地址的符号、运行装在时才能确定地址的调用dll中的符号。 编译过程是:编译器先查找函数名、变量名定义或声明是否存在,先查找当前cpp定义、再到include进来的里面找(预处理后include里的函数声明也在此cpp中),所以动态库的导出函数必须在其头文件声明,需要用到dll的程序要include动态库头文件。都存在就翻译成符号。三个地方都找不到的就报编译错误。最后生成.obj.(至于ob 阅读全文