学习日记之享元模式和Effective C++
享元模式(Flyweight):运用共享技术有效地支持大量细粒度的对象。
(1),享元模式能够避免大量很相似的开销。在程序设计中,有时须要生成大量细粒度的类实例来表示数据。假设能发现这些实例除了几个參数外基本上都是同样的。有时就能大幅度地降低须要实例化的类的数量。假设能把这些參数移到类的外面,在方法调用时将他们传递进来,就能够通过共享大幅度降低实例的数目。
(2)。假设一个应用使用了大量的对象。而这些对象造成非常大的存储开销的时候就考虑使用。还有就是对象的大多数状态能够外部状态,假设删除对象的外部状态,那么能够用相对较少的共享对象代替非常多组对象。
Effective C++:
1:请使用 traits classes 表现类型信息
(1)。Traints classes 使得“类型相关信息”在编译器可用。他们以 templates 和 “templates 特化”完毕实现。
(2),整合重载技术(voerloading)后。traits classes 有可能在编译器对类型运行 if...else 測试。
2:认识 template 元编程
(1),Template metaprogramming(TMP。模板元编程)可将工作由执行期移往编译期,由于能够实现早期错误侦測和更高的执行效率。
(2)。TMP 可被用来生成“基于政策选择组合”(based on combinations of policy choices)的客户定制代码。也可用来避免生成对某些特殊类型并不适合的代码。
今日工作问题:
对于QMainWindow窗口,在show 。resize 时候。系统会在重绘前将原来的背景使用系统默认背景色擦除,假设系统默认背景色和当前窗口背景色不同,那么就会有闪烁现象。
探索1:使用setSysColor将系统背景色改为窗口背景色 结论:setSysColor会改变系统所以窗口背景色,失败。
探索2:使用qt自带双缓冲,设置window attribute 为Qt::WA_OpaquePaintEvent或者 Qt::WA_NoSystemBackground 结论:对背景闪烁问题没有作用
期望:1.希望能够通过跟踪源代码,找到详细系统绘制原理。解决闪烁问题。
2.通过改变某个窗口的背景色,禁用系统默认背景色绘制或者擦除操作解决闪烁问题。
相关文章
- 如何系统地学习 C++ 语言?(2021年4月更新)
- [C++] 异或加密
- 托管C++线程锁实现 c++11线程池
- C++栈学习——顺序栈和链栈的差别
- [c++菜鸟]《Accelerate C++》习题解答
- 81 C++ - STL容器使用时机
- C++学习、成长记录(2011-2012第一学期第18周)
- C/C++中函数参数传递
- 【c++】类和对象:让你明白“面向一个对象有多重要”:构造函数,析构函数,拷贝构造函数的深入学习
- 《从缺陷中学习C/C++》导读
- 《像计算机科学家一样思考C++》——1.6 术语
- C++Primer 学习(类 二)访问控制与封装
- C++Primer第五版学习(函数部分 三)
- C++学习之交互式表达式求值的详细讲解和简单代码示例
- 基于C++实现SLIC 超像素分割算法【100010745】
- 基于C++实现页面的缓冲区管理器【100010158】
- [学习笔记]Java作用域变量申明和C、C++的差异性
- 理清gcc、libc、libstdc++的关系(libstdc++是gcc搞的,libc++是llvm搞的,他们都是C++标准库的实现)
- 【C++】内存分区&引用
- C++ ------ const迭代器 和 const_iterator的区别
- 138、【贪心算法】leetcode ——452. 用最少数量的箭引爆气球(贪心区间重叠问题)(C++版本)
- 高效学 C++|组合类的构造函数
- 【C++快速上手】十二、位域学习笔记
- c++操作当前窗体句柄
- C++ Primer 学习笔记_104_特殊工具与技术 --嵌套类