- 博客(54)
- 资源 (1)
- 收藏
- 关注
原创 Qt — Graphics/View框架
Qt的Graphics/View框架被用来存放、显示二维图形元素,处理那些对图形元素进行操作的交互命令。Qt 应用程序的图形界面包含各种控件,比如窗口、按钮、滚动条等。所有这些控件对象都具有一个共同的基类QWidget。一个QWidget对象是构成图形界面的基本单位。它能够在屏幕上绘制自己,能够处理鼠标、键盘事件。控件所占的屏幕区域总是矩形的。在屏幕上显示多个控件时会按照一定的顺序逐个显示。我们称先被显示的控件位于“底层”,后被显示的位于“顶层”。当多个控件所占区域重叠时,顶层控件会遮挡底层控件。
2023-04-23 15:00:56
1247
原创 qt - 隐式共享与d-pointer技术
一般情况下,一个类的多个对象所占用的内存是相互独立的。如果其中某些对象数据成员的取值完全相同,我们可以令它们共享一块内存以节省空间。只有当程序需要修改其中某个对象的数据成员时,我们再为该对象分配新的内存。这种技术被称为隐式共享(implicit sharing)。该技术被Qt库广泛使用,接下来,介绍该技术,并剖析QString的部分源代码以演示该技术的具体实现。通常情况下,与一个类密切相关的数据会被作为数据成员直接定义在该类中。
2023-04-12 17:11:59
1181
原创 标准库及Qt对字符串的处理
绝大多数C++程序都会涉及字符串的处理。字符串中的字符可能是我们很熟悉的ASCII字符,也可能是其他自然语言中的文字。为了表示这些文字,在计算机发展历史上出现了各种文字编码方案。下面介绍了各种字符编码方案,重点介绍被广泛接受的Unicode编码方案。标准C++定义了模板类来处理字符串。特化后的类string处理字符类型为char的字符串,而特化后的类wstring处理字符类型为wchar_t的字符串,后者可以用来存储Unicode编码的字符串。
2023-04-11 17:54:09
1969
转载 COM编程攻略(二 COM最基本接口 IUnknown)
上一篇说到,C++传统的局限性在于,不同编译器带来的不一致的二进制布局造成不兼容,以及接口版本更新造成布局变化的不兼容。这一篇来详细说一下,微软是如何推出COM模型解决上述问题的。
2023-03-15 11:29:00
515
转载 COM编程攻略(一 传统C++编程局限性)
然而,很多情况下,编译器可以选择自己的实现方式,只要能达到static_cast的效果就可以了,并不能保证各个编译器下的对象模型都是一致的,类似的还有dynamic_cast,规范中并没有对实现进行约束,那么出现跨越调用边界(exe和dll相互调用)的情况,由于编译器的差异,也有可能会出现问题。在dll中,Foo的大小变成了8个字节,在其内部可正常运作,但是可执行文件并不知道这个dll的布局发生了变化,仍然按照4个字节的大小来访问Foo,则会造成非常严重的后果。特别说明 —— 该系列文章皆转自知乎作者。
2023-03-15 10:58:54
369
原创 软件架构模式
对于开发人员来说,在没有正规架构的情况下开始编写应用程序是很常见的。如果没有清晰且定义良好的体系结构,大多数开发人员和架构师通常会采用传统的分层体系结构模式(也被称为N层体系结构),将源代码模块分离到各个包中,进而形成所谓的分层。遗憾的是,这样做的结果只会得到一组没有组织的源码模块,这些模块之间缺乏清晰的角色、职责和关系。缺乏正规架构的应用程序通常是强耦合的、脆弱的、难以更改的,且没有明确的愿景或方向。因此,如果不完全理解系统中每个组件和模块的内部工作原理,就很难确定应用程序的体系结构特征。关于部署和维护
2023-02-15 18:08:15
782
原创 CHAPTER 7 The Concurrency API
c++ 11最大的成就之一是将并发性纳入语言和库中。由此产生的语言保证意味着,在c++的历史上,程序员第一次可以在所有平台上以标准行为编写多线程程序。这为构建丰富性的库奠定了坚实的基础,而STL库的并发元素(任务、未来、线程、互斥对象、条件变量、原子对象等等)仅仅是一个开始,它必将成为开发并发c++软件的一套越来越丰富的工具。模板:std::future和std::shared_future。在很多情况下,两者的区别并不重要,所以我经常简单地谈论。在接下来的条款中,请记住标准库有两个。
2023-02-10 11:34:28
99
原创 进程地址空间
操作系统是软件世界的管理机构,负责以合理的方式分配软件世界中的资源。从某种程度上说,定义“进程”这个概念的一个基本动机就是更方便地组织和分配系统资源。在操作系统的管理规则中,很多资源是针对进程来分配的,必须先要有一个进程,才能为其分配资源。在Windows操作系统中,每个进程都拥有如下资源:(1),一个虚拟的地址空间;(2)(又称客户ID,Client ID),简称PID,全局唯一的;(3) 一个(image),也就是该进程的程序文件(可执行文件,exe)在内存中的表示;
2023-02-04 22:11:31
921
原创 Windows QtCredator源码启动报错:Reason: Plugin initialization failed: No themes found in installation.
Cannot load plugin because dependency failed to load: Core(4.14.2) Reason: Plugin initialization failed: No themes found in installation
2023-01-11 15:16:43
397
原创 Item 40: Use std::atomic for concurrency, volatile for special memory
区分std::atomic和volatile
2022-11-22 16:59:50
228
原创 Item 37: Make std::threads unjoinable on all paths
std::thread 对象结束时必须变成 unjoinable(不可联结)状态
2022-11-18 17:43:50
119
原创 Item 36: Specify std::launch::async if asynchronicity is essential.
如果异步是必要的,请指定std::launch::async启动策略
2022-11-17 17:30:09
88
原创 Item 33: Use decltype on auto&& parameters to std::forward them
Item 33:Use decltype on auto&& parameters to std::forward them
2022-10-21 15:16:08
191
原创 Item 25: Use std::move on rvalue references, std::forward on universal references
对右值引用使用std::move,对万能引用则使用std::forward
2022-10-17 16:27:00
91
原创 Item 24: Distinguish universal references from rvalue references
区分万能引用和右值引用
2022-10-10 17:22:13
310
原创 Item 23: Understand std::move and std::forward
理解std::move 和 std::forward
2022-10-08 16:46:50
215
原创 CHAPTER 5 Rvalue References, Move Semantics, and Perfect Forwarding
右值引用、移动语义和完美转发
2022-09-30 16:41:21
114
原创 Item 22: When using the Pimpl Idiom, define special member functions in the implementation file
使用Pimpl机制时,将特殊成员函数的定义放在实现文件中
2022-09-29 18:17:22
227
原创 Item 21: Prefer std::make_unique and std::make_shared to direct use of new
std::make_unique std::make_shared new
2022-09-16 20:51:36
425
原创 Item 20: Use std::weak_ptr for std::shared_ptr - like pointers that can dangle
使用std::weak_ptr替代可能失效的std::shared_ptr
2022-09-15 14:31:26
282
原创 Item 19: Use std::shared_ptr for shared-ownership resource management
使用std::share_ptr管理具有共享所有权的资源
2022-09-14 11:00:45
366
原创 Item 18: Use std::unique_ptr for exclusive-ownership resource management
使用srd::unique_ptr来管理独占所有权的资源
2022-09-04 18:45:13
221
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人