AI Academy
促销
CodeGym University
学习
课程
任务
调查 & 测验
游戏
帮助
日程
社区
Users
论坛
聊天
文章
成功故事
动态
评价
订阅
浅色主题
课时
评论
关于我们
开始
开始学习
立即开始学习
我的进度
课程
任务地图
课程
C++
C++
级别 49
委托构造函数:消除重复代码
C++ SELF
等级 49,
课时 0
讲解 C++ 中的委托构造函数:如何消除重载之间的重复代码,选择“主”构造函数并通过初始化列表将其他构造函数委托给它(
:
ClassName
(
...
)
)。理解执行顺序(先执行被委托的构造函数,然后执行包装者的函数体),通过
Rectangle
和
Task
的示例巩固,并讨论限制与常见错误(委托循环、尝试“在初始化后再初始化”字段,以及由副作用构成的层叠问题)。
static‑类成员:全局配置与 id 生成
C++ SELF
等级 49,
课时 1
解析什么是
static
字段和
static
方法在 C++ 中:它们与普通成员有何不同,为什么
static
方法没有
this
,
static
字段“存放”在哪里以及为什么需要对它进行一次定义(以及链接错误是什么样子)。在实践中构建应用的全局配置(
AppConfig
)和唯一标识符生成器(
next_id_
),最后总结典型错误和反模式“隐藏的全局变量”。
何时重载运算符是合理的
C++ SELF
等级 49,
课时 2
我们分析为什么在 C++ 中重载运算符不是“魔法”,而是成为类型公共 API 一部分的函数:哪些场景适合使用
operator==
、
operator<<
和
operator<=>
,如何区分“值类型”和具有多重含义的实体,为什么可预测性和无副作用很重要,以及如何使用检查清单和流程图来做决定。以
Task
和函数
printTask()
为例说明动机:可读性比“为美观而美观”更重要。
operator
<<
用于
std::ostream
— 对象输出
C++ SELF
等级 49,
课时 3
我们讲解在 C++ 中如何正确重载用于输出流的
operator
<<
:为什么签名应该是
std::ostream&
operator
<<
(
std::ostream&
,
const
T&
),为什么要返回引用以支持像
std::cout
<<
a
<<
b
这样的链式调用,如何通过公共接口或通过
friend
来打印,以及如何通过
std::ostringstream
获取字符串。最后 — 常见错误和反模式列表。
operator== 与相等契约 — “相等” 是什么意思
C++ SELF
等级 49,
课时 4
我们来讲解为何在 C++ 中为自定义类型定义
operator==
、相等性应满足哪些属性(自反性、对称性、传递性和“可替换性”)、标识相等(
id
)与按值相等(所有字段相同)如何区分、什么时候适合使用
operator==
=
default
,以及这如何影响像
std::find
这样的标准算法。另有讨论:为什么对
double
的“近似相等”最好放在像
almostEqual
这样的函数中,而不是把魔法藏进
==
。
Please enable JavaScript to continue using this application.