21.y — 第 21 章项目
向读者 Avtem 致敬,感谢他构思并合作完成了这个项目。项目时间 让我们实现经典游戏 15 拼图!在 15 拼图中,您将从一个随机排列的 4×4 拼图块网格开始。其中 15 个拼图块标有数字 1 到 15。一个拼图块缺失。…
向读者 Avtem 致敬,感谢他构思并合作完成了这个项目。项目时间 让我们实现经典游戏 15 拼图!在 15 拼图中,您将从一个随机排列的 4×4 拼图块网格开始。其中 15 个拼图块标有数字 1 到 15。一个拼图块缺失。…
在课程中,我们介绍了表达式。默认情况下,表达式在运行时求值。在某些情况下,它们必须如此:std::cin >> x; std::cout << 5 << '\n'; 由于输入和输出无法在编译时执行,因此上述表达式必须在运行时求值。在之前的课程中…
作者注:本课为选修课。未来的课程会提及十六进制数,因此在继续学习之前,您至少应该对这个概念有所了解。在日常生活中,我们使用数字计数,其中每个数字可以是 0、1、2、3、4、5、6、7、8 或 9。十进制…
在之前的课程中,我们介绍了两种字符串类型:std::string () 和 std::string_view ()。由于 std::string_view 是我们第一次接触视图类型,我们将花费额外的时间进一步讨论它。我们将重点介绍如何安全地使用 std::string_view,并提供一些示例来说明它如何…
类模板参数推导 (CTAD) C++17 从 C++17 开始,在从类模板实例化对象时,编译器可以根据对象的初始化器类型推导出模板类型(这简称为)。例如:#include
在课程中,我们介绍了必须为每组不同的类型创建单独的(重载)函数的挑战:#include
在之前的课程中 (),我们指出函数定义的语法如下:returnType identifier() // identifier 替换为您的函数名称 { // 您的代码在此处 } 虽然我们展示了返回类型为 void 的函数示例,但我们没有讨论这…
有些问题往往会被反复问到。本常见问题解答将尝试回答最常见的问题。Q1:为什么不应该使用“using namespace std”?语句 using namespace std; 是一个。using-directive 允许来自给定命名空间的所有标识符…
在课程中,我们介绍了 constexpr 关键字,它用于创建编译时(符号)常量。我们还介绍了常量表达式,它们是可以在编译时而不是运行时求值的表达式。常量表达式的一个挑战是,不允许在普通函数中调用函数…