AI Academy
促销
CodeGym University
学习
课程
任务
调查 & 测验
游戏
帮助
日程
社区
Users
论坛
聊天
文章
成功故事
动态
评价
订阅
浅色主题
课时
评论
关于我们
开始
开始学习
立即开始学习
我的进度
课程
任务地图
课程
C++
C++
级别 15
按值传递:副本与复制成本
C++ SELF
等级 15,
课时 0
在这节课中,我们将讲解
C++
23
中参数的按值传递:为什么形如
T
x
的参数意味着会创建一个副本,几乎“免费”的
int
副本与可能代价高昂的
std::string
和
std::vector
副本有何不同,为什么
const
不会取消复制,什么时候“接收 → 转换 → 返回”的风格是合适的,以及如何在那些只读取数据的函数中,因为“隐藏的副本”而不小心让程序变得更沉重。
T& 和 const T& —— “第二个名字”
C++ SELF
等级 15,
课时 1
在本讲中,我们会把
C++
中参数里的引用当作一种“契约”来理解:
T
&
与
const
T
&
有什么区别,为什么
T
&
不能绑定到临时对象,而
const
T
&
却可以,以及如何仅凭函数签名就立刻看出:函数会修改参数,还是只读取它。实践部分我们会把这些知识应用到基于
std::vector
和
std::string
的控制台 TodoList,最后再巩固几类典型错误(多余的非常量引用、对
const
与拷贝的错误预期)。
T* 与 nullptr:指针作为地址
C++ SELF
等级 15,
课时 2
在本讲中,你将理解
T*
在
C++
中的含义,
&
取地址运算符如何工作,为什么需要
nullptr
,如何通过
*
安全地解引用指针,以及为什么像
T*
这样的参数常表达“可为空契约”。实践部分会涉及输出参数(
out
)、输入校验、数组与指针的关系(decay),最后讨论常见错误以及如何避免它们。
返回多个值:struct、std::pair 与 std::tuple
C++ SELF
等级 15,
课时 3
在本讲中我们会讲解如何在
C++
中通过“一次
return
”返回多个值:使用
struct
、
std::pair
和
std::tuple
。我们将比较可读性和顺序混淆的风险,给出用于一个简易命令行记账小程序的示例,并讨论常见错误(返回局部变量的引用、索引魔法、忘记检查
ok
标志等)。
结构化绑定:auto [a, b] = ...;
C++ SELF
等级 15,
课时 4
在本讲中,我们将通过实践讲解 C++17+ 中的结构化绑定:如何把 std::pair、std::tuple 和 struct “解包”为有意义的变量,auto、auto& 与 const auto& 有什么区别,为什么给临时值创建引用很危险,以及如何编写像 for (const auto& [k, v] : ...) 这样的可读循环。
Please enable JavaScript to continue using this application.