C++_ 模板学习二
非类型模板参数 NTTP 概述 前面使用的模板参数都是“类型” 非类型模板参数传递的是编译期常量值 固定容量的栈 值也是类型身份的一部分 下面是两个完全不同的类型 非类型模板实参必须是编译期常量 合法 不合法 Capacity 不会作为普通成员存储 Capacity 是编译期值,...
非类型模板参数 NTTP 概述 前面使用的模板参数都是“类型” 非类型模板参数传递的是编译期常量值 固定容量的栈 值也是类型身份的一部分 下面是两个完全不同的类型 非类型模板实参必须是编译期常量 合法 不合法 Capacity 不会作为普通成员存储 Capacity 是编译期值,...
控件注册机制 使用 TplSWindowFactory NewWindow只会在SOUI模块中调用。 对象的释放 TObjRefImpl里有个虚函数OnFinalRelease。 SWindow和SSkinObjBase是在SOUI中实现的,因此派生这两个类的新的控件类以及皮肤类...
类型萃取的设计与实现 概述 类型萃取(type traits)可以理解成编译期函数 它们主要通过: 类模板 偏特化 using 类型成员 static constexpr 成员 类型萃取的三种主要形式 类型 输入输出 例子 预测型 trait 类型 → bool is_same、...
shared_ptr类 简述内存的分配: 静态内存用来保存局部的static对象,类static数据成员,以及定义在函数之外的变量。 栈内存用于保存定义在函数内的非static对象。 分配在静态内存或者栈内存中的对象,由编译器自动创建或销毁。 对于栈对象,仅在其定义的程序块允许时...
锚点布局 size size="width, height" width height full 代表高度或者宽度和父窗口的客户区大小相等 -1 根据窗口内容自动计算窗口大小 int pos | 代表参考父窗口的中心 % 代表在父窗口的百分比 [ 用于X时,参...
进程地址空间 概述 Windows 进程地址空间和 Linux 一样采用虚拟地址空间,每个进程有独立的虚拟地址空间,由 Windows 内核和硬件 MMU 联合管理 核心区别在于: Windows 使用 PE(Portable Executable)格式代替 ELF 使用 Hea...
SetMsgHandled 当用户在自己的消息映射表中增加一个消息处理函数,而且是插入在映射表的CHAIN_MSG_MAP(SHostWnd)前(也应该在此之前,否则很可能就收不到消息)。 默认情况下会自动标志该消息已经被处理了,如此一来就不会继续交给SHostWnd处理。 解决...
自旋锁 用ATOMIC_FLAG_INIT进行了flag的初始化 它确保了flag的初始状态是清除(或说“未设置”)状态 lock调用了test_and_set方法来试图获取锁 test_and_set会检查flag的当前值:如果flag是清除状态,则设置它并返回false;如果...
23 优先选择非成员非友元函数,而不是成员函数 概述 优先考虑使用非成员非友元函数,而不是成员函数 这种做法有助于保持类的接口简洁,提高代码的可读性和可维护性 为什么优先选择非成员非友元函数 增强封装性: 非成员函数不需要访问类的私有或受保护成员,因此可以减少类的内部实现细节暴露...
概述 ATL ATL 本来是为了写 COM 组件(ActiveX、OLE)而生的,顺带提供了最基础的窗口能力 WTL WTL 是微软的一个团队后来单独发布的头文件库,专门填充 ATL 在 UI 方向的空白 关系 wtl是工具箱,不是框架 ATL 概述 下面这些文件,WTL 依赖这...
搜索当前标签