zoukankan      html  css  js  c++  java
  • 学习日记之享元模式和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.通过改变某个窗口的背景色,禁用系统默认背景色绘制或者擦除操作解决闪烁问题。

  • 相关阅读:
    文本框样式
    flash载入xml不显示中文之谜
    日期 时间 正则表达式
    .NET对象生命周期小结
    Python标准库12 数学与随机数 (math包,random包)
    CXF 4 应用开发
    CXF 2
    CXF 3
    MyEclipse提示键配置、提示快捷键、提示背景色、关键字颜色、代码显示
    CXF 5参考资料
  • 原文地址:https://www.cnblogs.com/cxchanpin/p/6814650.html
Copyright © 2011-2022 走看看