AI Academy
促销
CodeGym University
学习
课程
任务
调查 & 测验
游戏
帮助
日程
社区
Users
论坛
聊天
文章
成功故事
动态
评价
订阅
浅色主题
课时
评论
关于我们
开始
开始学习
立即开始学习
我的进度
课程
任务地图
课程
C++
C++
级别 55
std::error_code — I/O、filesystem 的错误代码
C++ SELF
等级 55,
课时 0
我们来讲解在 C++ 中如何优雅地处理「外部世界」的预期失败(I/O、文件、权限)而不使用异常:什么是
std::error_code
,为什么“空代码”表示成功,如何读取
message()
/
value()
,通过
std::errc
和
std::make_error_code
比较原因,以及带有
out
参数并在调用处检查
if
(
ec
) 的典型 API 风格是什么样子。
统一错误策略——类别与消息
C++ SELF
等级 55,
课时 1
我们来分析,如何在控制台 C++ 应用中把错误设计成数据:使用
enum class
ErrorKind
+
Error
模型,通过
print_error()
统一输出格式,遵守“一个错误 → 一份报告”的纪律,并使用稳定的 exit codes。实践部分基于一个带有
std::variant
的迷你 CLI,并把策略的中心点放在
run_app()
/
main()
中。
template <typename T>: 适用于任意类型的代码
C++ SELF
等级 55,
课时 2
解析在 C++ 中函数模板如何消除复制粘贴:编写一个通过
template
<
typename
T
>
的“模板”,理解实例化(
my_min
<
int
>
,
my_min
<
double
>
), “操作契约”(需要
operator
<
,
operator
<<
,
operator
+
), 选择合适的参数(
const
T
&
,
T
&
,
T
), 并为
std::vector
组装一个通用工具小项目。
类型推断与不生效的情况
C++ SELF
等级 55,
课时 3
我们分析 C++ 中的模板参数推断(template argument deduction):编译器如何根据参数推断出
T
,为什么同一个
T
不能同时是
int
和
double
,在哪些函数签名中推断不可行(例如当
T
仅出现在返回类型时),以及参数形式
T
&
与
const
T
&
会如何影响临时值的接收。另有对“坑人的”参数类型的单独讨论:
{...}
、
nullptr
、字符串字面量,并给出快速诊断检查表 + 一个实用小示例“Expense Tracker”。
通过简单示例讲解类模板
C++ SELF
等级 55,
课时 4
我们来解析什么是 C++ 类模板:模板(蓝本)与具体类型有何区别,模板的参数和实参是什么意思,编译器如何实例化
Box<int>
和
Box<std::string>
,以及你对
T
隐含提出了哪些要求。在
Box<T>
、
Setting<T>
和
Repository<T>
(用于 TaskPilot 应用)示例中展示基本语法、const 方法的使用、操作契约以及典型错误。
Please enable JavaScript to continue using this application.