摘要:
条款10:优先考虑限域 enum 而非未限域 enum 作用域区别 未限域枚举(unscoped enum,C++98风格) 枚举值(enumerator)直接泄漏到枚举所在的作用域中,可能导致命名冲突。 enum Color { black, white, red }; // black, whi 阅读全文
posted @ 2025-07-20 19:17
_Sylvan
阅读(7)
评论(0)
推荐(0)
摘要:
条款11:优先考虑使用 deleted 函数,而非使用未定义的私有声明 背景与问题 在 C++98 中,想禁止某些特殊成员函数(如拷贝构造函数、拷贝赋值运算符)被调用,常用做法是将它们声明为私有(private)且不定义。 这样做虽然防止了外部调用,但如果在成员函数或友元中调用这些函数,只能在链接阶 阅读全文
posted @ 2025-07-20 19:17
_Sylvan
阅读(18)
评论(0)
推荐(0)
摘要:
条款6:当 auto 推导不如预期时,显式类型初始化的必要性 使用 auto 虽然带来便利和一致性,但当表达式返回的是代理类对象时,auto 有可能推导出非预期的类型,从而导致程序行为错误,甚至产生未定义行为。 std::vector<bool> std::vector<bool> features 阅读全文
posted @ 2025-07-20 19:16
_Sylvan
阅读(14)
评论(0)
推荐(0)
摘要:
条款5:优先考虑auto而非显式类型声明 优先使用 auto 代替显式类型声明,除非这样会损害代码的可读性或导致类型推导错误。使用 auto 不只是图省事,它能带来: 更强的类型安全 更少的重复 更高的可移植性 更少的维护负担 避免未初始化变量 int x; // 可能未初始化 auto y; // 阅读全文
posted @ 2025-07-20 19:16
_Sylvan
阅读(8)
评论(0)
推荐(0)
摘要:
条款7:区别使用()和{}创建对象 C++ 中的三种初始化方式 方式 示例 说明 圆括号 () int x(0); 传统构造语法 等号 = int x = 0; 赋值初始化 花括号 {} int x{0}; C++11 引入的统一初始化方式,称作 brace initialization 花括号初始 阅读全文
posted @ 2025-07-20 19:16
_Sylvan
阅读(21)
评论(0)
推荐(0)
摘要:
条款2:auto 类型推导 auto 与模板类型推导的对应关系 虽然 auto 不直接用于模板、函数或形参,但它与模板类型推导之间存在一一映射的关系,可以通过一个非常规范和系统的流程相互转换。 对应关系类比 template<typename T> void f(ParamType param); 阅读全文
posted @ 2025-07-20 19:15
_Sylvan
阅读(25)
评论(0)
推荐(0)
摘要:
条款3:理解 decltype decltype(expr) 会返回表达式 expr 的类型(精确地,不做修改)。 它不像 auto 使用模板类型推导规则,不会剥去引用、cv 限定等信息。 const int i = 0; decltype(i) // const int bool f(const 阅读全文
posted @ 2025-07-20 19:15
_Sylvan
阅读(22)
评论(0)
推荐(0)
摘要:
条款4:类型推导结果的查看方式 选择什么工具查看类型推导,取决于希望在哪个阶段获取类型信息:编辑时、编译时、或运行时。 编辑时:通过 IDE 提示 鼠标悬停即可查看变量/参数/函数的推导类型。 需要代码处于基本可编译状态。 const int theAnswer = 42; auto x = the 阅读全文
posted @ 2025-07-20 19:15
_Sylvan
阅读(13)
评论(0)
推荐(0)
摘要:
C++ 返回值优化(RVO) 当函数返回一个对象时,按照传统理解,编译器会: 在函数内部创建一个临时对象(返回值对象)。 通过拷贝构造函数或移动构造函数,将临时对象拷贝或移动到调用者的变量。 这可能导致一次或多次额外的对象构造、拷贝、移动,影响性能。 返回值优化(RVO,Return Value O 阅读全文
posted @ 2025-07-20 19:12
_Sylvan
阅读(94)
评论(0)
推荐(0)
摘要:
Qt 信号与槽连接成功的本质与时机 信号与槽连接的本质 Qt 信号槽机制基于元对象系统(Meta-Object System),使用 connect() 函数在运行时建立信号和槽之间的映射。 connect(sender, signal, receiver, slot) 在调用时,会将发送者对象的信 阅读全文
posted @ 2025-07-20 19:10
_Sylvan
阅读(68)
评论(0)
推荐(0)
摘要:
SlideshowDialog 动画启动时机导致 startMusic 信号失效问题及正确触发流程总结 在 Qt 项目中,有一个 SlideshowDialog 类,其中的子控件 AnimationWidget 会在启动动画时发射信号 startMusic(),用于通知外部开始播放音乐。 Slide 阅读全文
posted @ 2025-07-20 18:44
_Sylvan
阅读(14)
评论(0)
推荐(0)
摘要:
AnimationWidget 析构时发射 stopMusic 信号崩溃 AnimationWidget 类负责播放图片动画,同时通过信号控制背景音乐的播放、暂停和停止。 在项目中,AnimationWidget 的析构函数中直接调用了 emit stopMusic(),用于通知音乐停止。 问题描述 阅读全文
posted @ 2025-07-20 18:43
_Sylvan
阅读(19)
评论(0)
推荐(0)
摘要:
QSS QSS(Qt Style Sheets)是 Qt 的样式系统,用于美化控件,控制控件的颜色、边框、字体、背景、间距等外观效果。它的语法类似于 Web 的 CSS,但有自己的限制和扩展。 QSS 的应用方式 QSS 可以通过以下方式应用: 方式 说明 widget->setStyleSheet 阅读全文
posted @ 2025-07-20 18:42
_Sylvan
阅读(76)
评论(0)
推荐(0)
摘要:
替代 Qt6 废弃的 QMediaPlaylist 废弃说明:Qt 6 中移除了 QMediaPlaylist,QMediaPlayer 也不再内置播放列表支持。 Qt6 移除了官方 QMediaPlaylist,需要自己实现一个简单的播放列表管理类,负责管理媒体文件列表、当前索引、循环模式等。然后 阅读全文
posted @ 2025-07-20 18:41
_Sylvan
阅读(291)
评论(0)
推荐(0)
摘要:
QPixmap QPixmap 是 Qt 中用于显示位图图像的类,适合 GUI 界面绘制。它在后台会尽可能使用硬件加速,在屏幕上显示时性能很好,但不适合频繁修改像素数据。 主要特点 只能在 GUI 线程中使用(需要 GUI 环境) 支持透明通道(Alpha) 适合快速绘制 不适合像素逐点修改,若需要 阅读全文
posted @ 2025-07-20 18:41
_Sylvan
阅读(194)
评论(0)
推荐(0)

浙公网安备 33010602011771号